Nachdem ich ein ganz einfaches Programm unter Netbeans (Linux)
geschrieben habe, wollte ich das auch unter Windows ausführen.
Nun, da hat es dann überhaupt nicht geklappt, die Fehlermeldung konnte
ich nicht lesen (das Fenster hat sich zu schnell geschlossen). Also habe
ich es unter Linux ausgeführt und bekomme nach dem Aufruf "java Test"
folgende Fehler:
Exception in thread "main" java.lang.NoClassDefFoundError: Test (wrong
name: Test/Test)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:438)
at
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:97)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:244)
at java.net.URLClassLoader.access$1(URLClassLoader.java:212)
at java.net.URLClassLoader$1.run(URLClassLoader.java:193)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
at java.lang.ClassLoader.loadClass(ClassLoader.java:286)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:282)
at java.lang.ClassLoader.loadClass(ClassLoader.java:243)
Komisch daran finde ich nur, dass es unter Netbeans einwandfrei läuft.
Es werden zwar Warnungen wegen irgendwelchen Schriften ausgegeben, aber
es läuft ohne Probleme.
Ich hoffe nicht, dass meine Frage zu einfach ist. Aber unter
www.deja.com habe ich nur gefunden, was ich davor falsch gemacht habe
(die Klasse mit Endung gestartet).
Vielen Dank im Voraus.
Gruß Daniel
--
The worst day finswimming is better than
the best day working.
Hi!
Sieht aus, als hättest Du Probleme mit dem Verzeichnis. Bist Du in dem
richtigen Verzeichnis wirklich "drinnen"? Sonst 'denkt' die JVM nämlich,
es würde sich um ein packet handeln...
Hth, Ingo
Die Klasse Test gehoert also dem Package "Test" an...
Vermutlich sieht es irgendwo auf Deiner Platte ungefaehr so aus:
..../Test/Test.java
..../Test/Test.class
Du hast dann wohl in der Kommandozeile etwa folgendes eingegeben:
.../Test> java Test
Richtig waere gewesen:
.../> java Test.Test
Der package-Name gehoert num (voll ausgezeichneten) Klassennamen....
> Komisch daran finde ich nur, dass es unter Netbeans einwandfrei läuft.
> Es werden zwar Warnungen wegen irgendwelchen Schriften ausgegeben,
> aber es läuft ohne Probleme.
Das duerfte daran liegen, dass Netbeans weiss, dass die Klasse Test
im Package Test liegt, und somit einen korrekten Aufruf aus dem
korrekten Verzeichnis heraus erstellt....
> Ich hoffe nicht, dass meine Frage zu einfach ist. Aber unter
> www.deja.com habe ich nur gefunden, was ich davor falsch
> gemacht habe (die Klasse mit Endung gestartet).
Es ehrt Dich, selbst Nachforschungen angestellt zu haben....
Waeren nur alle so ... naja... fleissig....
BTW: Die JavaCodeConventions waeren fuer Dich IMO
mal einen Blick wert....
Package-Namen schreibt man naemlich eigentlich klein....
hth
Ciao
Chris
--
Christian Wederhake
Privat : caw...@gmx.net
Java-Fragen : ja...@cawgod.com
Vielen Dank für eure Antworten.
Zur ersten:
Ja ich bin richtig im Verzeichnis drin. Ich habe auch alle Rechte.
Zur zweiten:
Das hat sich so schön einfach angehört, leider klappt es nicht.
Also, so sieht es in meinem Verzeichnis aus:
daniel@daniel:~/nbuser32/sampledir/Test > dir
insgesamt 20
-rwxr--r-- 1 daniel users 637 Jun 5 13:21 Test$1.class
-rwxr--r-- 1 daniel users 632 Jun 5 13:21 Test$2.class
-rwxr--r-- 1 daniel users 2436 Jun 5 13:21 Test.class
-rwxr--r-- 1 daniel users 2595 Jun 5 13:21 Test.form
-rwxr--r-- 1 daniel users 2317 Jun 5 13:21 Test.java
Jetzt habe ich "java Test.Test" gestartet und bekomme die Fehlermeldung,
die ich ganz am Anfang bekommen habe:
Exception in thread "main" java.lang.NoClassDefFoundError: Test/Test
Aber diesmal habe ich es nicht mit der Endung *.class gestartet...
Vielen Dank!
Gruß Daniel
P.s.:
> Es ehrt Dich, selbst Nachforschungen angestellt zu haben....
*g* Ich mag es auch nicht, wenn immer die gleichen Fragen gestellt
werden...deswegen suche ich lieber. Und einem wird eher geholfen...
Ich sehe zwei Möglichkeiten, was Du tun könntest, damit es geht:
1) Im Classpath muß irgendwo das Verzeichnis "~/nbuser32/sampledir"
stehen, oder
2) Du mußt java Test.Test vom Verzeichnis "sampledir" aus aufrufen (und
nicht direkt aus "sampledir/Test")
Grund:
Die Angabe Test.Test veranlaßt die VM die Klasse Test/Test.class zu
suchen. Da du aber bereits im Unterordner Test bist, kann die VM diesen
nicht finden (das ginge nur, wenn der übergeordnete Ordner im Classpath
wäre).
2) ist IMHO die bessere Alternative.
Gruß,
Andreas
> Hi!
>
> Vielen Dank für eure Antworten.
> Zur ersten:
> Ja ich bin richtig im Verzeichnis drin. Ich habe auch alle Rechte.
>
> Zur zweiten:
> Das hat sich so schön einfach angehört, leider klappt es nicht.
> Also, so sieht es in meinem Verzeichnis aus:
>
> daniel@daniel:~/nbuser32/sampledir/Test > dir
> insgesamt 20
> -rwxr--r-- 1 daniel users 637 Jun 5 13:21 Test$1.class
> -rwxr--r-- 1 daniel users 632 Jun 5 13:21 Test$2.class
> -rwxr--r-- 1 daniel users 2436 Jun 5 13:21 Test.class
> -rwxr--r-- 1 daniel users 2595 Jun 5 13:21 Test.form
> -rwxr--r-- 1 daniel users 2317 Jun 5 13:21 Test.java
>
> Jetzt habe ich "java Test.Test" gestartet und bekomme die Fehlermeldung,
> die ich ganz am Anfang bekommen habe:
> Exception in thread "main" java.lang.NoClassDefFoundError: Test/Test
>
> Aber diesmal habe ich es nicht mit der Endung *.class gestartet...
Versuch mal:
cd ..
java Test.Test
Du must im Basisverzeichnis der Package-Hierarchie sein.
Thomas
Ich weiß nicht, was ich ohne Newsgroups machen würde...
Es funktioniert ohne Probleme. Mein erstes Programm mit Java läuft... ;)
Vielen Dank für eure Geduld!
Gruß Daniel