Interpreter-Fehler NoClassDefFoundError - einfachstes Programm - komm nicht drauf!!!

Goldi

Aktives Mitglied
Liebe Leute von Java!

Es tut mir echt leid: Es muss irgend was so simples sein, dass es keine passende HIlfestellung aus den Unmengen an NoClassDefFoundError-Beiträgen gibt - die sind alle schon zu speziell. Und doch komme ich nicht drauf. Hier ein einfachstes Programm: Eine einzige Klasse mit einer einzigen main-Methode:

Java:
public class JTest1 {

	public static void main(String[] args) {
		int l = args.length;
		if (l==0) {
			System.out.println("Ohne Parameter arbeite ich nicht!");
		} else {
			for (int i=0; i<l; i++) {
				System.out.println("<" + i + "> " + args[i]);
			}
		}
	}
}

Die Quelldatei heißt JTest1.java, wie die Klasse *check*; sie lässt sich mit javac compilieren und mit java fehlerfrei ausführen *check*; die main-Methode muss daher richtig implementiert sein und wenn ich oben schaue ... *check*. Die Probleme beginnen beim Erstellen eines ausführbaren jar-Archivs:

Ich binfinde mich in meinem Homeordner (Linux). Der Binärcode (JTest1.class) liegt in einem Unterverzeichnus "test1". Im Homeordner habe ich eine Datei "manifest.txt" angelegt mit folgendem Inhalt:

Code:
Main-Class: test1.JTest1

... selbstverständlich mit der geforderten Zeilenschaltung; schreibfehler sehe ich keinen *check*. Ohne Leerzeichen nach dem Doppelpunkt gibt's einen anderen Fehler - sollte also so passen, wie oben dargestellt *check*.

Ich bin also in meinem Homeordner und gebe über die Shell folgende Anweisung ein:

Code:
jar -cvfm mytest1.jar manifest.txt test1

Die Ausgabe liefert nix Ungewöhnliches:

Code:
Manifest wurde hinzugefügt
test1/ wird hinzugefügt(ein = 0) (aus = 0)(0 % gespeichert)
test1/JTest1.class wird hinzugefügt(ein = 754) (aus = 481)(36 % verkleinert)
test1/JTest1.java wird hinzugefügt(ein = 266) (aus = 183)(31 % verkleinert)
*check*.

Das Archiv wird angelegt, in dem sich erwartungsgemäß der Ordner "test1" befindet, in dem wiederum die JTest1.class mit der main-Methode liegt. außerdem gibt es einen Ordner "META-INF" in dem sich die Datei "MANIFEST.MF" befindet mit dem erwarteten Inhalt:

Code:
Manifest-Version: 1.0
Created-By: 1.7.0_79 (Oracle Corporation)
Main-Class: test1.JTest1

Versuche ich nun, mit
Code:
java -jar mytest1.jar
auszuführen, wirft es besagten NoClassDefFoundError aus:

Code:
Exception in thread "main" java.lang.NoClassDefFoundError: test1/JTest1 (wrong name: JTest1)
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
	at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
	at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)

Ich bin alles durchgegangen, was irgendwo an möglichen Fehlerquellen beschrieben wird - habe alles mögliche probiert, hab mich insbesondere mit der manifest.txt gespielt (in Unterordner test1 speichern, den Main-Class-Pfad auch ohne Angabe von "test1.", Kombinationen aus beidem). Nix funzt.

Was habe ich übersehen???

Herzlichen Gruß
Goldi
 

Tom299

Bekanntes Mitglied
Hmm, ich hab noch nie ein Java-Programm ohne Package erstellt, geht das denn?
Vielleicht mal noch im Manifest den Classpath auf . setzen?

Ach, da seh ich gerade: du hast ein Verzeichnis, das test1 heißt und gibst das in der Manifest an? Java erwartet da aber sicherlich den Packagenamen und nicht ein Verzeichnisname. Also versuch mal das test1 wegzulassen und nur die Main-Klasse anzugeben
 
Zuletzt bearbeitet:

Dompteur

Top Contributor
Ist das der vollständige Java-Source ?
Wenn ja, dann fehlt die package-Angabe. Die Directory-Struktur und die package-Struktur müssen zusammen passen. Dadurch, dass du ein test1 Directory hast, müsste dies auch im Java-Source als package angegeben werden.
Sonst füg bitte den vollständigen Source ein.
 

Goldi

Aktives Mitglied
Servus Dompteur!

Danke, mit einigem weiteren Rumprobieren hat es Schlussendlich funktioniert. Die Pakete habe ich im Eingangsbeispiel bewusst außen vor gelassen, weil ich vermutete, dass das Teil des Problems war, als ich noch ein "richtiges" Programm verpacken wollte und eben auf diesen Fehler stieß. Ich habe mich wohl mit der Ordnerstruktur fürchterlich angestellt, deshalb für alle, die auch mit ausführbaren Archiven kämpfen, hier jetzt ein kleines Summery:

1. Java-Projekt in der (Verzeichnis-)Struktur samt Paketen so organisieren, wie man das aus der einschlägigen Literatur kennt.

2. Nach dem Compilieren in das Projektverzeichnis wechseln - man sieht dort also jetzt die Paketordner rumliegen.

3. In diesem Projektordner die manifest.txt anlegen und ein ausführbares jar-Archiv erstellen, beginnend mit einem beliebigen Paket:
Code:
jar -cvfm myProject.jar manifest.txt myPackage1
(myPackage1 steht für einen beliebigen Unterordner, der ein namensgleiches Paket repräsentiert).

4. Die restlichen Pakete an das Archiv anfügen:
Code:
jar -uvf myProject.jar myNextPackage
.

5. Die manifest.txt kann man wieder löschen und das Programm kann mit "java -jar myProject" gestartet werden.

Mir düncht das etwas umständlich, vielleicht gibt's eine elegantere Verfahrensweise, aber Hauptsache es funzt.

Besten Gruß
Goldi
 

Tom299

Bekanntes Mitglied
Klar geht das einfacher: Benutz eine IDE (z.B. Eclipse), schreib dein Programm, dann geh auf Export -> Runnable Jar und schon wird die JAR für dich erstellt inkl. Manifest ;-)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P NoClassDefFoundError: org/apache/commons/collections4/ListValuedMap trotz vorhandener Klasse? Java Basics - Anfänger-Themen 10
C NoClassDefFoundError mit externer Jar bei Start aus Eclipse Java Basics - Anfänger-Themen 3
H JUnit in Eclipse: java.lang.NoClassDefFoundError: Java Basics - Anfänger-Themen 9
J Erste Schritte java.lang.NoClassDefFoundError Java Basics - Anfänger-Themen 4
D NoClassDefFoundError Java Basics - Anfänger-Themen 2
H java.lang.NoClassDefFoundError Run as>> Run on Server Java Basics - Anfänger-Themen 2
P Exception in thread "main" java.lang.NoClassDefFoundError: Java Basics - Anfänger-Themen 1
C Java-Applet Fehler "NoClassDefFoundError"? Java Basics - Anfänger-Themen 1
T NoClassDefFoundError Java Basics - Anfänger-Themen 3
K Caused by: java.lang.NoClassDefFoundError: org/mindrot/jbcrypt/BCrypt Java Basics - Anfänger-Themen 0
S NoClassDefFoundError Java Basics - Anfänger-Themen 7
R NoClassDefFoundError Java Basics - Anfänger-Themen 3
H Classpath java.lang.NoClassDefFoundError externe Libary Java Basics - Anfänger-Themen 4
M Exception in thread "main" java.lang.NoClassDefFoundError: MeineKlasse Java Basics - Anfänger-Themen 12
I NoClassDefFoundError Java Basics - Anfänger-Themen 10
M Klassen Exception in thread "main" java.lang.NoClassDefFoundError: Java Basics - Anfänger-Themen 2
B NoClassDefFoundError Java Basics - Anfänger-Themen 18
H NoClassDefFoundError Java Basics - Anfänger-Themen 4
R NoClassDefFoundError im *jar Archiv Java Basics - Anfänger-Themen 7
P java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory Java Basics - Anfänger-Themen 1
hdi NoClassDefFoundError Java Basics - Anfänger-Themen 16
B NoClassDefFoundError Java Basics - Anfänger-Themen 2
U NoClassDefFoundError ? Java Basics - Anfänger-Themen 9
T Fehlermeldung: java.lang.NoClassDefFoundError Java Basics - Anfänger-Themen 10
A java.lang.NoClassDefFoundError Java Basics - Anfänger-Themen 3
A NoClassDefFoundError Java Basics - Anfänger-Themen 2
A NoClassDefFoundError Java Basics - Anfänger-Themen 2
V java.lang.NoClassDefFoundError -- was kann ich tun? Java Basics - Anfänger-Themen 8
L java.lang.NoClassDefFoundError / SIP-Servlets Java Basics - Anfänger-Themen 4
G NoClassDefFoundError: javax/xml/stream/XMLStreamException Java Basics - Anfänger-Themen 23
Y Frage zu "NoClassDefFoundError" Java Basics - Anfänger-Themen 4
G failed.java.lang.NoClassDefFoundError Java Basics - Anfänger-Themen 4
M jar-File ausführen - NoClassDefFoundError Java Basics - Anfänger-Themen 4
G Referenzierte Projekte: java.lang.NoClassDefFoundError Java Basics - Anfänger-Themen 2
S NoClassDefFoundError - Was tun? Java Basics - Anfänger-Themen 5
G NoClassDefFoundError: - leider ohne die vermisste Klasse Java Basics - Anfänger-Themen 2
B Java -jar NoClassDefFoundError Java Basics - Anfänger-Themen 2
K FEHLER: ".java.lang.NoClassDefFoundError" Java Basics - Anfänger-Themen 5
K java.lang.NoClassDefFoundError: Klasse (wrong name... Java Basics - Anfänger-Themen 17
O java.lang.NoClassDefFoundError Exception in thread "mai Java Basics - Anfänger-Themen 5
C RealJ java.lang.NoClassDefFoundError Java Basics - Anfänger-Themen 5
L java.lang.NoClassDefFoundError . was nun? Java Basics - Anfänger-Themen 12
A java.lang.NoClassDefFoundError: FloatInt/class Java Basics - Anfänger-Themen 4
P java.lang.NoClassDefFoundError.Hauptklasse fehlt Java Basics - Anfänger-Themen 13
F NoClassDefFoundError!? Java Basics - Anfänger-Themen 5
G java.lang.NoClassDefFoundError Java Basics - Anfänger-Themen 3
J NoClassDefFoundError Java Basics - Anfänger-Themen 6
N java.lang.NoClassDefFoundError: main Java Basics - Anfänger-Themen 6
B Anfängerfrage zu 'NoClassDefFoundError' Java Basics - Anfänger-Themen 2
U java.lang.NoClassDefFoundError Java Basics - Anfänger-Themen 3
T Netbeans jar einbinden NoClassDefFoundError Java Basics - Anfänger-Themen 2
E NoClassDefFoundError Java Basics - Anfänger-Themen 9
ff java.lang.NoClassDefFoundError: task/class Java Basics - Anfänger-Themen 4
J "main" java.lang.NoClassDefFoundError: PortENum Java Basics - Anfänger-Themen 9
A NoClassDefFoundError Java Basics - Anfänger-Themen 7
C NoClassDefFoundError bei jar-File Java Basics - Anfänger-Themen 7
E java.lang.NoClassDefFoundError Java Basics - Anfänger-Themen 10
T NoClassDefFoundError: Java Basics - Anfänger-Themen 20
N java.lang.NoClassDefFoundError Java Basics - Anfänger-Themen 7
L NoClassDefFoundError Packete Java Basics - Anfänger-Themen 3
G NoClassDefFoundError Java Basics - Anfänger-Themen 6
H Warum bekomme ich einenen noclassdeffounderror ? [erledigt] Java Basics - Anfänger-Themen 7
megachucky komisches problem mit NoClassDefFoundError Java Basics - Anfänger-Themen 21
F NoClassDefFoundError Java Basics - Anfänger-Themen 6
I Programm funzt nicht (NoClassDefFoundError)! Java Basics - Anfänger-Themen 3
G java.lang.NoClassDefFoundError Java Basics - Anfänger-Themen 2
K java.lang.NoClassDefFoundError: HalloJava Java Basics - Anfänger-Themen 5
P java.lang.NoClassDefFoundError Java Basics - Anfänger-Themen 9
B Nochmal NoClassDefFoundError Java Basics - Anfänger-Themen 3
D NoClassDefFoundError Java Basics - Anfänger-Themen 15
G java.lang.NoClassDefFoundError. Hä? Java Basics - Anfänger-Themen 4
R NoClassDefFoundError Java Basics - Anfänger-Themen 5
C SWT-Programm startet nicht: NoClassDefFoundError Java Basics - Anfänger-Themen 6
J java.lang.NoClassDefFoundError bei Java-Aufruf aus UNIX Java Basics - Anfänger-Themen 2
B Warum java.lang.NoClassDefFoundError? Java Basics - Anfänger-Themen 8
W NoClassDefFoundError Java Basics - Anfänger-Themen 7
C Einfachstes Programm Hilfe Java Basics - Anfänger-Themen 1
A Einfachstes HTML in Java darstellen Java Basics - Anfänger-Themen 4
J Delay erzeugen, ohne Programm zu blockieren Java Basics - Anfänger-Themen 7
Ü Dead Code im Programm? Java Basics - Anfänger-Themen 13
M Java Mail Programm Java Basics - Anfänger-Themen 4
E Java Programm zur anzeige, ob Winter- oder Sommerzeit herrscht Java Basics - Anfänger-Themen 62
M Mini Jar-Programm Java Basics - Anfänger-Themen 51
G JTable Listselectionlistener friert das Programm ein Java Basics - Anfänger-Themen 8
M Das Programm stellt nichts dar Java Basics - Anfänger-Themen 2
K Programm compilierbar aber nicht ausführbar... Java Basics - Anfänger-Themen 21
Z Programm Ideen Java Basics - Anfänger-Themen 8
P Wie kann ich in meinem Java Programm etwas dauerhaft speichern? Java Basics - Anfänger-Themen 5
P Wie kann ich beispielsweise Speicherstände eines Spiels DAUERHAFT in meinem Programm speichern? Java Basics - Anfänger-Themen 3
H Java-Programm zur Ausgabe von Zuständen Java Basics - Anfänger-Themen 80
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19
benny1993 Java Programm erstellen für ein Fußball-Turnier Java Basics - Anfänger-Themen 3
T Programm stürzt ab Java Basics - Anfänger-Themen 40
KeinJavaFreak Erste Schritte Programm "Java(TM) Platform SE binary " nicht vorhanden Java Basics - Anfänger-Themen 1
G Programm läuft durch, ohne Eingabe aus dem Chat abzuwarten Java Basics - Anfänger-Themen 4
N Programm Funktioniert mit .txt Datei aber nicht mit .rtf Datei Java Basics - Anfänger-Themen 2
N Interpreter-Fehler Compiler zeigt keine Fehler an, aber das Programm läuft nicht (BlueJ) Java Basics - Anfänger-Themen 2
D Java Programm mit Batch-Datei starten Java Basics - Anfänger-Themen 32
Jul1n4tor Programm mit Scanner und If-Statements Java Basics - Anfänger-Themen 2
D Wie sehe ich ein Java-Programm? Java Basics - Anfänger-Themen 27

Ähnliche Java Themen

Neue Themen


Oben