Interpreter-Fehler jar - MainClass wird nicht gefunden

B00bietrap

Mitglied
Tudiluu liebe Mitprogrammierer

Es handelt sich um folgendes...
Ich habe mit nem Kumpel n VisionSystem Programmiert das momentan aus 17 Klassen besteht.
Nun wollt ich das ganze in einem .jar file haben.
zuerst hatte ich das problem
Code:
Failed to load Main-Class manifest attribute from
Hab dann nach lösungen gesucht und auch gefunden...
Hab die Manifest datei umeschrieben und jetzt das...

Code:
C:\Dokumente und Einstellungen\siegt5>java -jar E:\_Diplomarbeit\Uther1.0\dist\U
ther1.0.jar
Exception in thread "main" java.lang.NoClassDefFoundError: UtherVer1/Uther
Caused by: java.lang.ClassNotFoundException: UtherVer1.Uther
        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)
Could not find the main class: UtherVer1.Uther. Program will exit.


Die Manifest sieht momentan so aus:
Code:
Manifest-Version: 1.0
Main-Class: UtherVer1.Uther
Class-Path: E:\_Diplomarbeit\Uther1.0\lib\ij.jar; E:\_Diplomarbeit\Uther1.0\lib\jamod-1.2-SNAPSHOT.jar

Die Kompilierte in der .jar datei folgendermassen:
Code:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.1
Created-By: 1.6.0_22-b04 (Sun Microsystems Inc.)
Main-Class: UtherVer1.Uther
Class-Path: E:\_Diplomarbeit\Uther1.0\lib\ij.jar; E:\_Diplomarbeit\Uth
 er1.0\lib\jamod-1.2-SNAPSHOT.jar


Jemand ne idee, wie ich klar machen kann, dass Uther.class die mainclass ist?
 
Die Manifest braucht nur eine Leerzeile am Schluss... oder anders gesagt: Die letzte Zeile mit Inhalt muss mit einem Zeilenumbruch enden.

Ist die Klasse UtherVer1.Uther auch richtig im JAR enthalten (die Exception lässt nämlich auf "Nein" vermuten)? Kannst Du mal die Dateistruktur innerhalb des JARs grob auflisten?
 
@ DerEisteeTrinke nee, es ist nur eine Leerzeile im Manifest vorhandnen. so wie's sein sollte

@musikk Der klassenname und das package heissen richtig. hab da mal n screen davon gemacht.

utherv.jpg

utherjar.jpg


@SlaterB aha. dat wusst ich ned. werds bei gelegenheit ändern. hab gedacht man schreibts gross wie die klassen^^

Irgendwie steh ich mir auf der Leitung... absolut null ahnung worans liegen könnte...
 
Zuletzt bearbeitet:
Also wenn der Inhalt des JARs so wie in dem Screenshot oben ist, dürfte eigentlich keine ClassNotFoundException auftreten... Hast Du wirklich nochmal verifiziert, dass die JAR-Datei, die Du ausführen willst, den erwarteten Inhalt hat?
 
Hab nochma n Clean&Bild gemacht.
Es ist genau diese Jar datei.
Hab im NetBeans reingeschaut, hab mit dem Winrar reingeschaut.. das jar sieht genau so aus wie auf den screens. :S
 
Ich hatte das gleiche Problem mit einem Applet. Die Javakonsole vom Browser hat mir auch einen NoClassDefFoundError ausgespuckt. Ich hab die HTML Seite dreimal überprüft, das applet tag umgeändert und ging trotzdem nicht. Als ich dann meine IDE (BlueJ) zufällig zugemacht habe gings dann. Keine Ahnung was da was blockiert hat.
 
Hatte die Pfade vorher relativ... aber da es nich geklappt hat und ich dauernd n Clean&Rebuild gemacht hab musste ich den lib ordner immer wieder in den dist Ordner kippen... das wurd mir dann zu blöd und hab nen absoluten pfan reingehämmert bis es mal funzt *hust*

hab jetzt mal wieder den pfad relativ gemacht und halt den lib Ordner zum .jar file kopiert.
Die meldung hat sich nun verlängert... is aber noch nich verständlicher geworden...

dat neue manifest mir dem relativen pfad:
Code:
Manifest-Version: 1.0
Main-Class: UtherVer1.Uther
Class-Path: lib\ij.jar; lib\jamod-1.2-SNAPSHOT.jar

Meldung:

Code:
C:\Dokumente und Einstellungen\siegt5>java -jar E:\_Diplomarbeit\Uther1.0\dist\
ther1.0.jar
Exception in thread "main" java.lang.NoClassDefFoundError: ij/plugin/PlugIn
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClassCond(Unknown Source)
        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 UtherVer1.Uther.<init>(Uther.java:45)
        at UtherVer1.Uther.main(Uther.java:368)
Caused by: java.lang.ClassNotFoundException: ij.plugin.PlugIn
        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)
        ... 14 more

Glaube jetzt findet er die Libraries nich.^^
Hab ich mich irgendwie vertippt?
 
Zuletzt bearbeitet:
Code:
C:\Dokumente und Einstellungen\siegt5>java -jar E:\_Diplomarbeit\Uther1.0\dist\U
ther1.0.jar
Fehler: Hauptklasse UtherVer1.Uther konnte nicht gefunden oder geladen werden

hast recht.... immanoch dat problem mit der Hauptklasse :S
Package und klassenname stimmen doch >.< och menno...
 
Wenn ich die Libs jetzt nich selber reinhacke... wo hat das .jar file denn die libs zum benutzen wenn ich die nich mitgebe?
Die sind ja nicht in der Jar datei enthalten :S

Hab jetzt die Libs ausm classpath genommen. ich glaube er findet die main class so aber dafür die libs nimma :S

Code:
C:\>java -jar E:\_Diplomarbeit\Uther1.0\dist\Uther1.0.jar
Exception in thread "main" java.lang.NoClassDefFoundError: ij/plugin/PlugIn
        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$100(Unknown Source)
        at java.net.URLClassLoader$1.run(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 UtherVer1.Uther.<init>(Uther.java:45)
        at UtherVer1.Uther.main(Uther.java:368)
Caused by: java.lang.ClassNotFoundException: ij.plugin.PlugIn
        at java.net.URLClassLoader$1.run(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)
        ... 14 more

C:\>
 
Zuletzt bearbeitet:
YAY

ok.. back to basics...

Code:
Manifest-Version: 1.0
X-COMMENT: Main-Class will be added automatically by build

Die Jar files nach Anleitung von L-ectron-X zu einer library umgewandelt.
Danach Clean und Build gemacht.
Hab auch jetzt im dist Ordner nen lib Ordner bekommen und n readme.txt

Danköööö
 

Zurück
Oben