# "Could not find the main class. Program will exit"



## Gammler64 (26. Jan 2007)

Hallo,
ich habe ein ziemlich nerviges Problem..

Ich benutze Eclipse 3.2 und habe mir ein (für meine Begriffe)  recht umfangreiches Programm mit grafischer Oberfläche geschrieben. Da ich es nicht nur von Eclipse aus benutzen will, habe ich über File/Export/JAR file usw. mir das programm als jar-File exportiert.
Problem ist nun, dass ich die oben genannte Fehlermeldung vom "Java Virtual Machine Launcher" bekomme, wenn ich unter Windows einen Doppelklick auf die Datei mache:
"Could not find the main class. Program will exit." 

Ich habe aber definitiv beim Exportieren in Eclipse eingestellt, dass das Programm mit der main()-Methode die Main-Klasse sein soll!

Bei anderen Programmen funktioniert alles einwandfrei; nur bei diesem Programm erhalte ich immer wieder die selbe Fehlermeldung. 

Zwar habe ich über google und die Forensuche schon jede Menge Thread mit diesem Titel gefunden, doch keiner wollte mir so richtig helfen und igendwie bin ich leicht am verzweifeln...

Ich wäre für Hilfe sehr dankbar 

Mfg
Gammler64


----------



## Azrahel (26. Jan 2007)

Mach ma en KSKB, das könnt dir uns uns helfen  :wink:


----------



## Gammler64 (26. Jan 2007)

Wenn du mir verrätst was das ist, dann gerne? ^^


----------



## Azrahel (26. Jan 2007)

ein *K*leines *S*elbstständiges *K*ompilierbares *B*eispiel 

Sprich hau mal alles aus der main raus was nicht unbedingt drin sein muss. Meist wirste dann selbst schon drüber stolpern was es sein kann, und wenn nicht wissen wir schonmal das es nicht an deinem Code liegt  :wink: [/b]


----------



## Gammler64 (26. Jan 2007)

Naja ok, in der main() steht aber genau genommen nur eine Zeile Code ( new Terminverwaltung(); ) und da wird dann der Konstruktur aufgerufen.
Das Programm besteht mittlerweile aus 4 recht umfangreichen Klassen und ich wüsste auch nicht wonach ich da suchen soll, weil das Programm in der Eclipse Oberfläche einwandfrei funktioniert.


----------



## KSG9|sebastian (26. Jan 2007)

ja und welche abhänigkeiten hat die Terminverwaltung?
Steht in der Manifest auch die Main-Class drinnen? Vergess ich auch öffters einzustellen. Hast du sonstige Abhängigkeiten auf andere Jar-Files oder so?


----------



## Gammler64 (26. Jan 2007)

Das ist die MANIFEST.MF:
Manifest-Version: 1.0
Main-Class: Terminplaner4.Terminverwaltung

Ja es gibt Abhängigkeiten:
Ich habe eine externe .Jar Datei (eine Swing Komponente zum Eingeben des Datums) in die Jre in /lib/ext kopiert und dann per "import ..." im Programm importiert. Explizit ins neue Jar-File gepackt habe ich diese Datei nicht, aber ich bin mal davon ausgegangen, dass das über import automatisch funktioniert. Könnte da der Fehler liegen?


----------



## Azrahel (26. Jan 2007)

Packs doch mal explizit rein, was passiert denn dann?


----------



## L-ectron-X (26. Jan 2007)

Nach /lib/ext sollte grundsätzlich keine Bibliothek kopiert werden.


----------



## Gammler64 (26. Jan 2007)

Wie genau kann ich denn die pswing.jar mit einbinden? 
Im Export-Menü für Jar-Files finde ich keine Funktion dafür.

Mit dem kopieren nach /lib/ext
War erst das zweite mal, dass ich was importieren musste, was nich schon in Java drin ist. Und weil ich das dauernd brauche, habe ich es da reinkopiert.


----------



## L-ectron-X (26. Jan 2007)

Entweder, wie auch in der FAQ beschrieben, 
1. die fremde Bibliothek auspacken und mit ins eigene Jar-File packen, oder
2. Beim Start des Programms auf der Konsole mitgeben, oder
3. In der Manifestdatei im Class-Path-Attribut mit auflisten.


----------



## Gammler64 (26. Jan 2007)

Ok, danke.

Aber bevor ich mich daran versuche: Ist es überhaupt (recht) sicher, dass da das Problem liegt, oder liegt es vielleicht ganz woanders?
Vielleicht ist es das beste, wenn ich mal mein Programm hier poste. Aber bitte startet keine Grundsatzdiskussion über meinen Schreibstil; ich weiß, dass das Programm nicht wirklich optimal ist 
http://steinpage.de.vu/Terminplaner4/Terminplaner4.zip


----------



## Gammler64 (26. Jan 2007)

Und habe noch etwas festgestellt:
Wenn ich versuch, das Programm über "java Terminverwaltung.class"  in cmd starte, dann bekomme ich folgenden Fehler (in der Windows Konsole ausgegeben):
Exception in thread "main" java.lang.NoClassDefFoundError: Terminverwaltung/class

Heißt das, dass ich den Befehl java .. falsch benutze, oder ist etwas am Programm faul? 
Wie bereits gesagt: Unter Eclipse läuft seltsamerweise alles prima...


----------



## L-ectron-X (26. Jan 2007)

Ja, du benutzt den _java_-Befehl verkehrt.
Richtig muss es lauten: java Terminverwaltung


----------



## Gammler64 (26. Jan 2007)

Ok, die Ausgabe sieht trotzdem nicht sonderlich "gesund" aus  :!:  :?: 

C:\Dokumente und Einstellungen\Michi\Java Workspace\Grosse Schulprojekte\bin\Ter
minplaner4>java Terminverwaltung
Exception in thread "main" java.lang.NoClassDefFoundError: Terminverwaltung (wro
ng name: Terminplaner4/Terminverwaltung)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$000(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)



Die Datei Terminverwaltung.class existiert aber definitiv!


----------



## L-ectron-X (26. Jan 2007)

Naja, du musst dann schon das Package mit angeben:
java Terminplaner4.Terminverwaltung


----------



## Gammler64 (26. Jan 2007)

Ach so, dachte das wär kein Problem, wenn man mit cmd schon im richtigen Verzeichnis wäre..

Aber ich glaube das Problem liegt wirklich in der Abhängigkeit zu  pswing.jar!
Jedenfalls habe ich jetzt mal die Teile vom Programm entfernt, die auf dem import davon aufbauen und schon funktioniert der Programmstart. Also werde ich jetzt mal mit Hilfe von dem Tutorial hier schauen, ob ich die Jars ineinander kapseln kann usw.


----------



## Gammler64 (26. Jan 2007)

Also es funktioniert jetzt einwandfrei. Habe pswing.jar mit einbinden können und dann ging es jetzt halt einfach. 
Die Fehlermeldung von wegen der nicht gefundenen Main-Class ist mir allerdings komplett schleierhaft..

Auf jeden Fall vielen Dank für die vielen Denkansätze 

mfg
Gamlmer64


----------



## siroFranz (26. Jan 2007)

> Die Fehlermeldung von wegen der nicht gefundenen Main-Class ist mir allerdings komplett schleierhaft..



Das kommt mir bekannt vor, aber hatte sich aufeinmal gelöst.
Warum ?? weiß es nicht  :lol:  :lol: 

Gruß


----------



## Guest (26. Jan 2007)

Das seltsame war ja:
Als ich dann tatsächlich mal beim Exportieren der Jar-Datei die Informationen über die main-Klasse weggelassen habe, da kam dann plötzlich wiederum ne ganz andere Fehlermeldung  :roll:


----------



## Gammler64 (26. Jan 2007)

Anonymous hat gesagt.:
			
		

> Das seltsame war ja:
> Als ich dann tatsächlich mal beim Exportieren der Jar-Datei die Informationen über die main-Klasse weggelassen habe, da kam dann plötzlich wiederum ne ganz andere Fehlermeldung  :roll:



Sorry, ich wars.. Login vergessen


----------

