[JAVA ECLIPSE] NoClassDefFoundError

carnby

Cadet 4th Year
Registriert
Mai 2005
Beiträge
67
wenn ich in eclispe ein java programm ausführen möchte ( egal was für eines selbst bei einem simplen hallo welt programm) bekomme ich folgenden fehler:

java.lang.NoClassDefFoundError: de/pir8/java/HelloWorld
Caused by: java.lang.ClassNotFoundException: de.pir8.java.HelloWorld
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 java.lang.ClassLoader.loadClassInternal(Unknown Source)
Exception in thread "main"

den gleichen fehler bekomme ich wenn ich es über start -> ausführen -> cmd mache
wenn ich jedoch die cmd.exe in den ordner kopiere wo die .class datei liegt wird das programm korrekt ausgeführt

ich hab echt schon alles versucht aber komme irgendwie nicht weiter

tia :)
 
@ 1668mib
er schrieb doch
carnby schrieb:
....selbst bei einem simplen hallo welt programm....

was ja dann so aussehen sollte:

Code:
public class HalloWelt
{
    public static void main(String[] arg)
    {
          System.out.println("Hallo Welt");
    }

}

@carnby
sieht für mich danach aus, dass er die KLasse bzw das Package "de.pir8.java." einfach nicht finden kann.Hast du es mal ohne ein Package versucht? Wie genau startest du deine Anwendung? Ganz normal über den grünen Pfeil? WElchen Compiler (JDK 1.4/1.5/1.6 oder default) nutzt Eclipse laut Config?

MfG Psylo

Edit: Also ich habe mir mal eben die neuste Version von hier geladen und obiges "HalloWelt" ausprobiert und es funktioniert auf anhieb. Bei den Einstellungen habe ich alles auf Standard gelassen.
Mal ne dumme Frage am Rand. DU hast das JSE installiert?
 
Zuletzt bearbeitet:
NoClassDefFoundError heißt: er kann die Klasse im aktuellen Verzeichnis (genau... welchem?!?) nicht finden. Das sollte dem Java-Interpreter (der ja offensichtlich installiert sein muss, wo käme sonst der StackTrace her? >>> Psylo) schon mit übergeben werden.

carnby sagt ja selbst: "wenn ich jedoch die cmd.exe in den ordner kopiere wo die .class datei liegt wird das programm korrekt ausgeführt" - das liegt daran, dass Dateien bei relativer Pfadangabe auch im Verzeichnis des ausgeführten Programms gesucht werden.

Lösung: dem Java-Interpreter den Suchpfad (also wo Deine HalloWelt-Klasse zu finden ist) als Parameter mitteilen. Tipp: Eclipse macht soetwas bei einer ordentlich installierten JxSE beim Debuggen/Ausführen automatisch.
 
ich habs ohne package versucht...
benutze den 1.6 compiler ( der bei mir auch default ist )
ich machs ganz normal mit dem grünen pfeil

benutze allerdings ECLIPSE 3.3.2


hier mal ein "lustiges" bild:
 
Lösung: dem Java-Interpreter den Suchpfad (also wo Deine HalloWelt-Klasse zu finden ist) als Parameter mitteilen. Tipp: Eclipse macht soetwas bei einer ordentlich installierten JxSE beim Debuggen/Ausführen automatisch.

es ging doch früher auch ohne übergeben des pfads.. ( früher == vor zwei tagen)
du meinst dann sowas wie java -cp hallowelt oder?




sry für doppelpost hab mich aufs mergen verlassen :/
 
XunnD schrieb:
NoClassDefFoundError heißt: er kann die Klasse im aktuellen Verzeichnis (genau... welchem?!?) nicht finden. Das sollte dem Java-Interpreter (der ja offensichtlich installiert sein muss, wo käme sonst der StackTrace her? >>> Psylo) schon mit übergeben werden.

Na sag ich doch :D
Nee im ernst, du hast Recht und ich habe mich wohl in anbetracht der recht fortgeschrittenen Uhrzeit vertan. Natürlich muss der Interpreter da sein, sonst wäre ja eine ganz andere Fehlermeldung gekommen.

@carnby
Die einfachste Lösung lösung ohne viel rumprobieren wäre meiner Meinung nach die Deinstallation vom JDK/JSE, danach das neuste JDK 1.6U5 (glaube das ist die neuste) installieren (Standard Pfad inkl. JSE) und dann einfach noch die neuste Eclipse Version.
So musst du halt nicht lange den Fehler suchen.

MfG Psylo
 
Hi carnby,

ehm ja, der Screenshot sagt mir, das du die Klasse im falschen Verzeichnis hast.

Dein SRC Order ist ja

Code:
c:\_DEV[] dev\__src
(mein Beileid, hätte ein "c:\dev\src" nicht ausgereicht? )

Somit MUSS die Klasse de.pir8.java.HelloWorld laut ihrem Package Namen unter

Code:
c:\_DEV[] dev\__src\de\pir8\java\HelloWorld.java
liegen.

Und wenn du in den gleichen Ordner auch kompilierst dann auch die class Datei
Code:
c:\_DEV[] dev\__src\de\pir8\java\HelloWorld.class

Somit hatte schon mal Eclipse ein Problem deine Klasse auszuführen, da sie nicht in dem angegebenen Ordner lag.

Für den Aufruf in der Console musst du dann folgendes machen:

Im Order c:\_DEV[] dev\__src\
gibts du folgendes ein:

Code:
java de.pir8.java.HelloWorld

Dann geht das auch alles :D

Gruß
Nox

Edit: Wenn du in der Java-Ansicht von Eclipse gearbeitet hast, sollte Eclipse dir eigentlich die Klasse mit einem Error anzeigen, da sie am falschen Platz liegt.
 
@TheNoxier: der fehler oben ist nicht der gleiche fehler wie der auf den screenshots

der code vom screenshot ist
public class HalloWelt
{
public static void main(String[] arg)
{
System.out.println("Hallo Welt");
}

}

wie du siehst wird kein package angegeben


e// werde wohl mal deinstallieren und neu installieren wie DaPsylo vorschlieg
 
so es hat tatsächlich geklappt
weiss zwar nicht woran es lag aber jetzt klappt alles wieder...

jetzt hab ich aber ein anderes problem

kann mir hier jemand helfen beim installieren des jdbc mysql treiber?
bzw wie ich das mache und was ich für einstellungen dafür vornehmen muss ( wollte nicht extra dafür ein neuen thread aufmachen)
 
Also ich persönlich erstelle mir im Projektordner immer ein Verzeichnis "lib".
Dann von http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.6.zip/from/pick den Mysql- Connector besorgen. Nach dem entpacken die Datei "mysql-connector-java-5.1.6-bin.jar" in deinen neu erstellten "lib"- Ordner Kopieren.
Dann in Eclipse im "Package Explorer" mit rechtsklick auf dein Projekt klicken und "Proberties" auswählen.
Im neuen Fenster dann auf "Java Build Path" (müsste das 4. von oben sein) klicken, im Anschluss auf "AddJARs" klicken. Es müsste dann die Möglichkeit erscheinen um den Treiber auswählen zu können.

MfG Psylo
 
Dann muss der Treiber in den Classpath. Ich mache es meist so, dass ich meine Anwendung zusammen mit den Libs in ne JAR verpacke und dann exportiere :)

MfG Psylo
 
Zurück
Oben