Java Fehler beim Ausführen via CMD

cl0udt

Lt. Junior Grade
Registriert
Sep. 2008
Beiträge
508
Hallo zusammen,

habe ein Programm mit mehreren Klassen und eine davon enthält meine main-methode.
Wollte die jetzt über CMD starten und gleich noch 4 parameter übergeben.
Ich arbeite übrigens mit eclipse.

Leider meldet das CMD-Fenster:
"Exception in thread "main" java.lang.NoClassDefFoundError:" "Pfad zur Klasse"
"Caused by: java.lang.ClassNotFoundException:" "Pfad zur Klasse"
Und dann gleich drauf, folgende Meldungen:
http://img143.imageshack.us/f/maintm.jpg/
"Could not find the Main Class:" "Pfad zur Klasse"

Also beim duchforsten des Internets hab ich gelesen, dass man die Bibliotheken, die man benutzt zusätzlich via SET PATH einbinden muss. Habe aber keine andere, außer die Standardbibliothek benutzt: "JRE System Library". Und halt "JUnit4", aber ich rufe keine tests auf über die Main-Klassen-Methode...

woran könnte das liegen?
 
JRE bin und lib sind als PATH unter den systemvariablen von windows eingetragen, falls du das meinst.

Was meinst du mit Java home?
 
Mit den Informationen die du uns gibst kann man eigentlich nur Raten.
Kommt der Fehler bei javac file oder bei java.

Addhoc fällt mir vielleicht ein das du bei java das .class dran geschrieben hast (glaubs aber eher nicht).
Wieso verwendest keine IDE?
 
JAVA_HOME ist eine Umgebungsvariable. Manche Software braucht das, um bei Mehrfachinstallationen von Java das richtige Java zu nehmen. In Deinem Fall wird es unnötig sein, das einzurichten.

Wenn Du nur die Standardklassenbibliothek nutzt, dann musst du auch keine zusätzlichen Classpaths angeben.


1. Verwendest du JAR-Files oder hast du die class-Dateien direkt im Dateisystem rumliegen?
2. Wenn du kein JAR verwendest: Entspricht die Verzeichnisstruktur auch der Packagestruktur?
3. Von welchem Pfad startest du das Program? Im "root" der Packagestruktur?
 
Also die Verzeichnisstruktur, erstellt von eclipse entspricht ja normal nicht so der eigentlichen. Die .java- und die .class-Dateien liegen ja in unterschiedlichen ordnern...

ich starte das ausm root-verzeichnis, aber sowieso mit voller pfadangabe..
 
dein Klassenname stimmt aber schon mit dem Dateinamen überein, oder? Ansonsten könntest du evtl. mal den problematischen Codeteil hier posten (gerne auch als Pseudocode wenn es zu viel ist)
 
Also "problematischen" codeteil gibts eigentlich nicht.
Wenn ich die main über eclipse starte und parameter übergebe (via Run As-Configureation), dann läuft das Programm einwandfrei.

Müssen denn .class und .java dateien in einem ordner liegen, wenn man das programm via cmd starten will?

EDIT: Ja, klassenname und dateiname sind identisch
 
Ich gehe mal davon aus, dass du ein mit Eclipse erstelltes Projekt hast.

Deine Verzeichnisstruktur ist also
Projekt
--- bin
------ package1
--------- package1.1
------------ MainClass .class
--- src
------ package1
--------- package1.1
------------ MainClass.java

Ausführen tust du das ganze über die Konsole, indem du zuerst einmal in das bin-Verzeichnis des Projekts navigierst.
Dann führt das Kommando
$ java package1/package1.1/MainClass
zum Programmstart. Merke: Kein .class anhängen.
 
Hmm also mit dem $ kann mein CMD nix anfangen
 
Hehe wie kommts zu dem $? In der AUfgabenstellung steht das auch davor, bissl verwirrend :D

Ohne $ klappts jetzt.
Aber wie rufe ich das ganze denn z.b. aus dem Workspace-Ordner auf?
Oder von z.b. dem Desktop? Also ich kann für dateien, die ich übergebe als parameter ganz normale pfade, wie z.b. "C:\Windows..." angeben, die werden korrekt eingelesen, aber die Klasse selbst, die kann ich ich nicht über den ganz normalen windows-pfad aufrufen...
über den weg, müsste ich ja die .class dahinter schreiben, aber das darf ja nicht sein, wenn man das ganze auf diese art und weise aufruft...
 
Das $ ist das Prompt vieler Shells, also die Eingabeaufforderung. Wird bspw bei How-Tos gerne benutzt um zu verdeutlichen, dass die Zeile in der Konsole eingegeben werden soll. :p

Wie du das ganze aus anderen Verzeichnissen ausführen kannst weiß ich leider nicht.
Du kannst natürlich eine ausführbare JAR-Datei erstellen; die kannst du dann auch von überall aus ausführen. Aber während des Entwickelns ist das wahrscheinlich zu umständlich.
 
Zurück
Oben