# Could not find main class?



## hdi (3. Jan 2012)

Hey,

Ist mir peinlich, aber ich bekomme grad den sehr bekannten o.g. Fehler und verstehe nicht ganz was hier los ist. 

Ich hab mein Projekt als .jar exportiert, und wenn ich die jar anklicke erscheint die Fehlermeldung. Komischerweise kann ich es einwandfrei starten über java -jar myJar.jar. Aber nicht über java myJar.jar

Hier scheint irgendwas mit meinem OS nicht ganz zu stimmen, denn ein Kollege kann die jar auch ganz normal per Doppelklick ausführen.

OS: Win 7 x64
JDK & JRE: 7u2

Das ist die einzige Version, die drauf ist, und java -version /javac -version zeigt mir auch diese Version an.

Ich hatte dieses Problem noch nie. Warum findet er die main-class nur wenn ich es über die Shell mit dem -jar Command starte, und nicht ohne, bzw. mit Doppelklick auf das jar? Ich hab's auch schon mit javaw versucht zu starten, passiert aber das selbe.

Ich hatte auch mal Java 6 drauf (Projekt ist mit Java 7 kompiliert), aber das hab ich eigentlich erfolgreich deinstalliert. Zumindest hab ich wirklich nur den jdk/jre7 Ordner auf meiner Platte. Wie gesagt -version zeigt auch richtig an.

Ideen?


----------



## U2nt (3. Jan 2012)

Also ich hatte den Fehler auch schonmal, als ich ein unter Java7 kompiliertes Programm mit einer JRE6 ausführen wollte... Warum auch immer dieser Fehler. Aber wenn du sagst das ist die einzigste Version die installiert ist wunderts mich. Hast schonmal versucht nochmal neu zu installieren, also die JRE?

Vielleicht sind ja auch noch ein paar Reste in der Registry von Java6 hängen geblieben, z.B. wies geöffnet wird. Könnt man auch mal ausprobieren CCleaner die Registry aufräumen zu lassen.


----------



## hdi (3. Jan 2012)

Ja, gerade gemacht. Hab JRE und auch JDK deinstalliert, also komplett. Dann neuestes JDK gezogen, und -version gecheckt. Dass er die richtige Version nimmt ist eigentlich sicher, denn wie gesagt über

java -myJar.jar

bekomme ich den Fehler, und unmittelbar davor hab ich geprüft mit java -version, und der sagt mir jre 7. Nur mittels

java -jar myJar.java 

klappt's. Aber eben nur bei mir, mein Kollege kann's auch über den stinknormalen java-Aufruf bzw mit vom Desktop aus starten.

edit: Ich werd morgen mal meine registry durchsuchen, und nochmal alles komplett entfernen was ich entferntesten nach java klingt.


----------



## TheDarkRose (3. Jan 2012)

java -jar foobar.jar ist auch die korrekte Syntax um eine Jar zu starten.


----------



## U2nt (3. Jan 2012)

Also ich nehme mal an der Fehler liegt an den Startoptionen, die in deinem OS bei der .jar-Endung durchgeführt wird. Hab jetzt mal rausgekramt wie das ging... Also da es (leider) unter Windows 7 nichtmehr ohne weiteres möglich ist die Startparameter beim öffnen verschiedener Dateitypen zu ändern bzw. einzusehen, muss man das entweder über Zusatztools oder über die Registry machen.

Habe dafür das nette Tool "ExtMan" gefunden, welches portable ist, sprich nicht sinnlos installiert werden muss, siehe hier ExtMan - Dateitypen unter Vista und Windows 7 verwalten, bearbeiten, hinzufügen und löschen.

Wenn du das Tool gedownloadet und gestartet hast, scrollst du bis zur jar, klickst auf Erweiterung bearbeiten, anschließend im neuen Fenster sollte die Aktione "open" zu finden sein. Da einmal draufklicken und auf den Button Bearbeiten klicken. Nun kann man unten die Startaktion anschauen/ändern. Bei mir steht dort 
	
	
	
	





```
"C:\Program Files\Java\jre7\bin\javaw.exe" -jar "%1" %*
```
Ich nehme mal an bei dir sind diese Startparameter "verkackt". (Das Problem hatte ich auch einmal)

Probier das erstmal aus


----------



## hdi (3. Jan 2012)

> Ich nehme mal an bei dir sind diese Startparameter "verkackt". (Das Problem hatte ich auch einmal)


Genau das war's! Der -jar Parameter hat gefehlt, und übrigens war auch auf java statt auf javaw verlinkt. Was da wohl passiert ist?

Auf jeden Fall ein großes Danke! :toll:



> java -jar foobar.jar ist auch die korrekte Syntax um eine Jar zu starten.


Ich dachte er kann das normalerweise auch aus dem eigentlichen Dateinamen extrahieren, und es sei nicht unbedingt nötig? Kann aber sein dass ich das falsch in Erinnerung hab. Jaja, IDE ist halt Segen und Fluch in einem


----------



## TheDarkRose (3. Jan 2012)

hdi hat gesagt.:


> Ich dachte er kann das normalerweise auch aus dem eigentlichen Dateinamen extrahieren, und es sei nicht unbedingt nötig? Kann aber sein dass ich das falsch in Erinnerung hab. Jaja, IDE ist halt Segen und Fluch in einem



Hast du falsch in Erinnerung. Der normale Befehl spricht direkt .class Dateien an. Erst mit dem -jar Parameter startet er Jar's


----------



## hdi (3. Jan 2012)

Gut, danke für die Klarstellung.

PS: War neugierig und hab mir deine Sig angeschaut. Ist das Projekt von dir? Mir ist ein kleiner Tippfehler aufgefallen: Every funder is re*v*arded... -> rewarded


----------



## hdi (11. Jan 2012)

Kleine Ergänzung:

Ich hab den Fehler jetzt wieder, und weiß diesmal was ihn verursacht hat: Ich hab gestern ein Applet auf einer Site gehabt, und der Browser hat automatisch JRE6 runtergeladen. Ich hatte bereits JRE7 drauf, allerdings x64, und das geladene JRE6 ist x86. Zack schon kann ich keine jar's mehr starten. Deinstallieren des JRE6 hat nichts gebracht, es hat die Verknüpfung und die Parameter jetzt nachhaltig zerschossen. Werd das jetzt wieder mit dem o.g. Tool fixen. Wollte nur kurz ne Info da lassen was diesen Fehler verursacht. Wahrscheinlich tritt das nur bei x64 Systemen auf, da er zwischen x64 und x86 durcheinander kommt.


----------

