# jar-Datei enthält keine Main-Class



## JensE (23. Apr 2007)

Hallo,

1.) Ja ich habe den FAQ gelesen, und ja ich habe eine Leerzeile in meiner Manifest-Datei...

2.) Das Problem: Eine erstellte Jar-Datei enthält keine Main-Class, obwohl in der Manifestdatei angegeben.

Ich habe in einem Verzeichnis fünf .class-Dateien, eine davon (Main.class) enthält die main-Funktion. Dann erstelle ich das Jar so (wenn ich in diesem Verzeichnis bin):


```
"C:\Program Files\Java\jdk1.6.0\bin\jar.exe" -cvfm CARMENLogToMatlab.jar manifest.txt *.class
```

Das erzeugt mir die jar-Datei. Aber Doppelklick bzw. Ausführen bringt nur die Fehlermeldung, dass Java die Haupt-Klasse nicht finden kann. In der jar-Datei sind jedoch alle fünf .class-Dateien wie angegeben enthalten.

Die manifest.txt liegt im gleichen Verzeichnis wie die .class-Dateien und sieht so aus (alle Klassen im Package CARMENXML):


```
Main-Class: CARMENXML.Main
[Leerzeile]
```
Man beachte, dass ich die geforderte Leerzeile drin hab, und auch sonst keine überflüssigen Spaces drin sind.

Muss ich noch irgendwas mit dem Parameter -C angeben, wie im FAQ erwähnt?

Habe 2 Stunden rumprobiert und bin ratlos.


Vielen Dank,
Jens


----------



## JPKI (23. Apr 2007)

Probier mal -cvfM (<== grosses 'M') und nenn die TXT-Datei in manifest.mf um!
Edit: Speicher die Datei in einem Ordner namens "META-INF"!

*jar cvfM [Andere Dateien] META-INF*


----------



## L-ectron-X (23. Apr 2007)

JPKI hat gesagt.:
			
		

> Probier mal -cvfM (<== grosses 'M') und nenn die TXT-Datei in manifest.mf um!
> Edit: Speicher die Datei in einem Ordner namens "META-INF"!
> 
> *jar cvfM [Andere Dateien] META-INF*



Das große M wäre verkehrt. Diese Option kennt Jar nicht.
Das Manifest kann auch die Endung .txt haben, wenn es beim Aufruf von Jar genauso angegeben wird, wie das auch von JensE gemacht wurde.
Und das META-INF-Verzeichnis wird von Jar automatisch in der .jar-Datei angelegt, wenn die Optionen stimmen.

Versuche mal

```
"C:\Program Files\Java\jdk1.6.0\bin\jar.exe" -cvfm CARMENLogToMatlab.jar manifest.txt CARMENXML
```
Und kopiere die manifest.txt eine Verzeichnisebene höher, also oberhalb von CARMENXML.
Starte dann den Befehl in dem Verzeichnis, wo nun auch die manifest.txt liegt.


----------



## JPKI (23. Apr 2007)

L-ectron-X hat gesagt.:
			
		

> Das große M wäre verkehrt. Diese Option kennt Jar nicht.



So?



 :bae: 
Mit der 'M'-Option kann man dann den META-INF-Ordner mit der manifest.mf selbst hinzufügen (so mach' ich das immer),
weil das Programm *gar keine* manifest-Informationen hinzufügt. :meld:


----------



## L-ectron-X (23. Apr 2007)

Merkwürdig. ???:L  Bei einem Versuch das kleine m in ein großes zu ändern bekam ich eine Fehlermeldung.
Ist ja auch egal. Ich denke, was ich oben geschrieben habe, dürfte funktionieren.

Edit: Wenn du noch mal zu mir die Zunge rausstreckst, schneide ich sie dir mit einer Schere ab. :wink:


----------



## JPKI (23. Apr 2007)

L-ectron-X hat gesagt.:
			
		

> Edit: Wenn du noch mal zu mir die Zunge rausstreckst, schneide ich sie dir mit einer Schere ab. :wink:



 :bae:  :wink:

Edit: Bitte verzeih meine Manieren, doch es kommt nicht oft vor, dass ein Programmierneuling etwas besser weiss als solch ein Programmierprofi wie du. Diesen Triumph muss ich einfach feiern! :bae:  :wink:  :lol:  :shock:


----------



## L-ectron-X (23. Apr 2007)

Ach weißt du, wenn man einmal mit Java angefangen hat, wird man kein Ende mehr finden.
Will damit sagen: auch ein "Profi" weiß nicht alles, ist nicht unfehlbar und macht Fehler.


----------



## JPKI (23. Apr 2007)

Das beruhigt mich ungemein ;-) .


----------



## JensE (24. Apr 2007)

@L-ectron-X



> ```
> "C:\Program Files\Java\jdk1.6.0\bin\jar.exe" -cvfm CARMENLogToMatlab.jar manifest.txt CARMENXML
> ```



Das funktioniert leider nicht. Eine FileNotFoundException bezüglich der Manifest-Datei wird ausgelöst (wobei ich die Manifest-Datei eine Verzeichnisebene höher lege...).

@JPKI

Dein Ansatz mit dem großen M erzeugt die Jar-Datei. Allerdings kommt folgende Fehlermeldung, wenn ich sie ausführen will:


```
Invalid or corrupt jar-File ....jar
```

Keine Ahnung was bei mir das Problem ist, vielleicht eine "kaputte" Java-Installation? Naja werde nochmal einiges probieren, und bei Erfolg mich nochmal melden...

Danke für die Antworten!


----------



## NTB (24. Apr 2007)

Schau Dir mal das JAR-File, dass dann erzeugt wurde an. Was steht da drin in der MANIFEST.MF? Wie ist die Verzeichnisstruktur?


----------



## JensE (24. Apr 2007)

Hi,

hab das jar-File in ".zip" umbenannt und mir dann den Inhalt angeschaut bzw. entpackt. Alle class-Dateien liegen dann im gleichen Verzeichnis (auch die mit der Hauptklasse). Dann gibt es ein Verzeichnis META-INF mit der manifest.mf, in der das gleiche drinsteht wie in meiner manifest.txt.

Grüße,
Jens


----------



## L-ectron-X (24. Apr 2007)

Hast du was an der Packagedeklaration geändert? Ich habs nämlich eben mal ausprobiert.
Es funktioniert so, wie ich es oben geschrieben habe. Könnte jetzt sein, dass du irgendwas missverstanden hast.


----------



## JensE (24. Apr 2007)

@L-ectron-X: Habe vorhin überlesen, dass ich den Befehl im gleichen Verzeichnis wie die manifest.txt ausführen soll. Dann erstellt er die jar-Datei, ja. Allerdings besteht das Problem, dass er die main-Datei net findet, immernoch  :?


----------



## L-ectron-X (24. Apr 2007)

Hast du die Main-Class in einem Package erstellt, bzw. in ihr das Package CARMENXML deklariert?


----------



## JPKI (24. Apr 2007)

Sei so lieb und probier mal meinen Tipp aus. Wirst nicht dümmer von. Um dir das mühsame Hochscrollen zu ersparen, hier nochmal die Syntax:

*jar cvfM JarDatei.jar <Dateien> META-INF*

Der META-INF-Ordner muss die Datei "manifest.mf" enthalten und
diese wiederrum die Angabe der Hauptklasse.


----------



## Gast (24. Apr 2007)

lol, JPKI du bist ja auch ultra der FrEaK, wer dich kennt is sowieso schon irgendwie verloren


----------



## Gast (24. Apr 2007)

hm, was ich damit sagen will, bei mir hats so geklappt, wie ers erklärt hat, warum kann man in diesem Billigforum nich editieren >.< naja, sorry fürs doppelposting


----------



## JPKI (24. Apr 2007)

Ähem...
DARF ICH DRAN ERINNERN, WER DEINEN SCH**SS PC JEDES MAL REPARIERT WENN DU IHN ZUGEMÜLLT HAST UND DAS DING NUR NOCH FÄHIG IST, DUMM ZU PIEPSEN???

Kleine Editierung: Ich ein Freak??? Das sagt der Richtige: Wenigstens zock ich net den lieben langen Tag Kampf um Mittelerde...


----------



## Wildcard (24. Apr 2007)

Gast hat gesagt.:
			
		

> warum kann man in diesem Billigforum nich editieren >.< naja, sorry fürs doppelposting


Weil du nicht angemeldet bist  :roll:


----------



## Wildcard (24. Apr 2007)

Was genau treibt ihr beiden hier?


----------



## JPKI (24. Apr 2007)

:roll:


----------



## Gast (24. Apr 2007)

Ich wollt nur sagen, dass es bei mir auch gefunzt hat und dass das Forum iwie kacke is und JP wollte mal sinnlos irgendwas spammen denk ich mal...


----------



## Wildcard (24. Apr 2007)

Kindergarten.
*closed*
Beschwerde PM an mich

@JensE
Wenn noch Fragen von deiner Seite bestehen melde dich bitte und ich öffne den Thread wieder.


----------

