Exportiertes Jar-File geht nicht

shevazri

Mitglied
Hallo

Programmiere gerade ein Spiel und wollte daher auch es mal in ein Jar-Exportieren, habe das ganze Projekt ausgewählt und auch ein Manifest-File mit der main-Class erstellen lassen, doch leider funktioniert es nicht immer wenn ich es starten will kommt die Fehlermeldung "could not find the main class..."

Hoffe ihr könnt mir helfen im Anhang ist das Jar-File
 

Anhänge

Bei mir funktioniert dein Programm, zwar mit Fehlern (Darstellung und Beenden) aber es geht.
Wahrscheinlich hast du dein Programm mit Java 1.7 kompiliert und führst es mit Java 1.6 aus.
Mehr Aufschluss über die Art des Fehlers bekommst du, wenn du dein Programm mal in der Befehlszeile ausführst:
Code:
java -jar run_for_270.jar
 
Okey danke, hab es mal mit der cmd geöffnet und du hast recht, es funktioniert zwar aber meine Bilder und meine Grafik funktioniert nicht, weiss jemand an was das liegen könnte???

Und wie finde ich heraus mit welchem JAVA ich es kompiliert habe??
 
aber meine Bilder und meine Grafik funktioniert nicht...
Hier findest du alles, was du zu Bildern in Jar-Dateien wissen solltest:
Grafikdateien laden und anzeigen ? Byte-Welt Wiki

Und wie finde ich heraus mit welchem JAVA ich es kompiliert habe??
Mit dem Disassembler-Tool aus dem JDK javap.
Du kannst dir dazu eine Batchdatei schreiben, die dir etwas Arbeit abnimmt.
Code:
@echo off
set path=.;C:\Program Files (x86)\Java\jdk1.7.0_03\bin
javap -v MeineKlasse.class
pause

Wie im Bild zu sehen ist, gibt die major version Auskunft über die benutzte Kompiler-Version, mit der die Klasse kompiliert wurde.

Welche major version sich hinter welchem JDK verbirgt, findest du hier:
http://www.java-forum.org/allgemeines/132564-class-datei-versionen.html
 

Anhänge

  • javap-Ausgabe.gif
    javap-Ausgabe.gif
    26,4 KB · Aufrufe: 36
Hey also die Grafiken werden komischerweise wenn ich das Programm mit Eclipse starte angezeigt. Nur eben nicht wenn ich das Jar über die cmd starte.

Also ich führe das Programm mit der gleichen Version aus wie mit der ich es kompiliert habe, daran sollte das Problem also nicht liegen.
 
Also ich mach einfach ein Label und nehme dann ein Icon dazu hier mal ein Beispiel:

Java:
	JLabel icon_obama = new JLabel(new ImageIcon("img/candidates/obama.jpg"));
	JLabel icon_romney = new JLabel(new ImageIcon("img/candidates/romney.jpg"));
	JLabel icon_santorum = new JLabel(new ImageIcon("img/candidates/santorum.jpg"));
	JLabel icon_gingrich = new JLabel(new ImageIcon("img/candidates/gingrich.jpg"));
	JLabel icon_paul = new JLabel(new ImageIcon("img/candidates/paul.jpg"));

und ausserdem habe ich noch eine Grafik die aus Polygonen besteht.
 
Ich habe den Link durchgeschaut und so habe ich es auch gemacht und wenn man das Programm in Eclipse ausführt zeigt es mir auch alle Bilder und die Grafik an, aber eben nicht wenn man es im Jar ausführt.
 
Starte das Programm mal auf der Konsole mit
Code:
java -jar MeineJar.jar
und poste dann hier mal die Fehlermeldungen.
Normalerweise wird das Programm in so einem Fall nicht ohne Fehlermeldungen ausgeführt.
 
So danke, es sagt mir die Pfade sind nicht korrekt, wie muss ich es machen, dass die Pfade von Eclipse dann auch im Jar gehen oder was muss ich da umstellen.

[EDIT]So habe es endlich zum Laufen gebracht:

Dein Link hat dabei geholfen.
Hier die Lösung, man muss das Zeug mit getClass.getResource() einbinden.

Ich habe aber noch das Problem, dass nun Eclipse mir eine NullPointerException an den Kopf wirft, aber wie gesagt im Jar-File geht alles[/EDIT]
 
Nein danke, es funktioniert jetzt alles war aufwendig aber hat Zeit gekostet.

Aber noch etwas es wäre doch noch schön wenn man das Jar-File ganz einfach über einen Doppelklick ausführen könnte, muss man da noch etwas spezielles machen? Das Manifest-File wird richtig erstellt trotzdem sagt er immer, das er die Main-Klasse nicht finden kann.

EDIT: Danke noch für die Hilfe bis hierhin.
 
Tja, dein letzter Beitrag führt zu keiner Lösung...
Nichts passt zusammen. Es gibt keinen Zusammenhang mit deiner Manifestdatei und dem Problem.
 
Das Problem ist, dass ich wenn ich die Jar-Datei über den Doppelclick ausführen möchte, das kommt er könnte die main-Klasse nicht finden, obwohl meiner Meinung nach am Manifest-File nichts falsch ist, das möchte ich halt noch beheben.
 
Entweder erfahre ich gerade ein Déjà-vu? :reflect: ...
...oder du bist einfach nur lernresistent.
Das habe ich dir bereits im 2. Beitrag (oben) versucht zu erklären.

Wahrscheinlich hast du eine inkompatible VM. Es kann sein, dass du mit Java 1.7 kompiliert hast, dann aber mit einer 1.6er JRE dein Programm startest.

Wenn du in die Befehlszeile
Code:
java -jar runfor270.jar
eingibst, sollten Fehlermeldungen ausgegeben werden, die Hinweise über das Problem geben können.
 
JA ich bin lernresistent, sagen meine Lehrer auch immer.

Aber wenn ich es über cmd-starte gibt es keine Fehler sondern es funktioniert, beim Doppelklick passiert einfach nichts.

Ausserdem funktioniert es bei all meinen Kollegen und die Haben Java 6 ich habe aber eine Java 7 JVM also kann es daran nicht liegen.
 
Zuletzt bearbeitet:
Dann könnte es auch sein, dass die javaw-Zuordnung fehlerhaft ist.
Öffne mal deinen Registry-Editor durch Eingabe von
Code:
regedit
auf der Kommandozeile.
Navigiere dann innerhalb des Verzeichnisbaumes nach

Code:
HKEY_CLASSES_ROOT\jarfile\shell\open\command

Auf der rechten Seite müsste nun folgender Schlüsselwert zu sehen sein (Das Verzeichnis zur JRE kann bei dir auch anders lauten).
Code:
"C:\Program Files (x86)\Java\jre7\bin\javaw.exe" -jar "%1" %*

Wenn dieser Schlüssel nicht existiert, kannst du ihn manuell anlegen, oder einfach die alte JRE deinstallieren und eine aktuelle installieren.
Der Schlüssel sollte dann angelegt werden.
 
Also der Schlüssel ist angelegt und der Pfad zeigt auch auf das richtige Verzeichnis. Ich werd es morgen mal auf meinem Laptop versuchen.

Ich habe es auch mal versucht mit der 64-bit Version von Java, es startet aber immer noch nicht.

Also bei mir auf dem Laptop funktioniert es nicht, bei meinem Kollegen aber schon. Auch auf meinem Pfad stimmt der Schlüssel in "jarfile".
 
So wie ich das sehe, haben wir alle Stolperstellen abgeklopft. Das Programm läuft auf Rechnern, die mindestens Java 1.6 installiert haben. Bei deinen Kollegen läuft es, nur bei dir nicht.

Das Problem ist also auf deinem Rechner zu suchen.
Dort stimmt der Schlüssel in der Registry, eine JRE 7 ist installiert. Gut!
Es startet dort mit einem Aufruf ohne Fehlermeldung in der Kommandozeile. Gut!

Falls du nur eine 64-Bit Version der JRE installiert hast, solltest du auf jeden Fall auch die 32-Bit Version zusätzlich installieren.

Ansonsten kann es imho keine weiteren Fallstricke geben.
 
Hallelujah, hab jetzt die 64-bit Version und die 32-bit Version installiert und nun funktioniert es auch.

Danke für die Hilfe.:toll::toll::toll::toll::toll::toll:
 

Zurück
Oben