Ich habe ein merkwürdiges Problem. Ich habe auf meinem Notebook Java vollständig installiert und auch sichergestellt, dass die Umgebungsvariable JAVA-HOME auf das richtige Verzeichnis zeigt.
Ich kann zwar Java-Programme kompilieren (per javac) aber das Ausführen danach gelingt mir nicht.
Der Befehl "java <KlassenName>" gibt mir immer die Fehlermeldung
Exception in thread "main" java.lang.NoClassDefFoundError:<KlassenName>
(scheint ja zumindest so, als würde der Befehl "java" erkannt)
Ich habe auch sichergestellt, dass die kompilierten Programme fehlerfrei sind (habe Testcode aus dem Internet benutzt!)
@Gast: Guck mal in die FAQ, da gibts einen Beitrag zur Einrichtung von Java auf einem PC.
Spätestens dann, wenn du den Pfad auf das bin-Verzeichnis deiner Java-Installation zeigen lässt, wirds laufen.
So lange musst du sonst noch den Pfad dorthin beim Programmstart mit angeben.
Spätestens dann, wenn du den Pfad auf das bin-Verzeichnis deiner Java-Installation zeigen lässt, wirds laufen.
So lange musst du sonst noch den Pfad dorthin beim Programmstart mit angeben.
Nicht unbedingt. Wenn er mit einer IDE/Editor arbeitet, wird dort meist der richtige Pfad zum JDK angelegt.
Andererseits kann ich mich auch irren. :wink:
Also:
ich habe sowohl jsdk als auch jre installiert.
jsdk setzt automatisch Pfad zum bin-Verzeichnis in die Variablen:
PATH und CLASSPATH.
Zusätzlich habe ich in PATH den Pfad zum bin-Verzeichnis von jre gesetzt.
In irgendeinem Verzeichnis habe ich ein .java-File.
Mit der MS-Dos Eingabeaufforderung gehe ich in dieses Verzeichnis und kompiliere diese Datei.
Dann versuche ich am selben Ort das Programm laufen zu lassen, indem ich "java <Klassenname ohne Dateieindung>" aufrufe. Leider bekomme ich immer dann die schon oben beschriebene Fehlermeldung.
(Ich benutze keine Packages!)
> Ich habe das allergleiche Problem und bin völlig am verzweifeln
Ich kenne das Gefühl, hab ich auch schon mal gehabt
Doch dann hab ich mir flugs ein kleines "Tool" vom Internet geholt
das mir meine "Executables" für mich erstellt :applaus:
und das benutze ich heute noch
Bitte schreibe mal genau auf, wie dein Pfad nun aussieht. Wo hast du die Angabe gespeichert?
Das gleiche bitte auch für JAVA_HOME.
Interessant ist vielleicht noch, wie deine Klasse heißt und wie du die Klasse in der java-Datei deklariert hast.
Mal sehen, vielleicht kommt ja dabei etwas heraus...
ich habe keine Pfadvariable Java-Home.
Wenn ich sie hinzufügen soll, auf welches Verzeichnis soll sie denn zeigen?
Sicherheitshalber habe ich noch einmal die aktuellste Java Installation installiert 1.5.0_05 (nachdem ich ordnungsgemäß die alte Version per Systemsteuerung deinstalliert habe und die manuell gesetzten Pfadvariablen entfernt habe).
Damit meine Eingabeaufforderung die Befehle "javac" und "java" erkennt, habe ich die Pfadvariable PATH zusätzlich auf das bin-Verzeichnis der jdk gelegt (wurde nämlich diesmal nicht automatisch gesetzt). Wie gehabt werden die Befehle überall erkannt aber "java <kompilierte Klasse>" ergibt weiterhin die selbe Fehlermeldung. Ich habe auch noch nachtraglich den Pfad des bin-Verzeichnis der jre in PATH hinzugefügt. Kein positives Resultat.
Ich habe auch bemerkt, dass ich für Quicktime ein eigenes Java mitinstalliert bekommen habe. Könnte das vielleicht das normale Java 1.5.0_05 blockieren?
Hier einmal die Pfadvariablen:
PATH
c:\ruby\bin;c:\Local\TeX\bin\win32;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Programme\ATI Technologies\ATI Control Panel;C:\Programme\QuickTime\QTSystem\;C:\Programme\Java\jdk1.5.0_05\bin;C\Programme\Java\jre1.5.0_05\bin
Hm, ihr seid zwei unterschiedliche Gäste, achso...
OK, dann vergessen wir JAVA_HOME, weil du hast ja davon nichts geschrieben...
Vielleicht klappts, wenn du eine paar kleine Änderungen vornimmst:
Code:
set path=.;c:\ruby\bin;c:\Local\TeX\bin\win32;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Programme\Java\jdk1.5.0_05\bin;C:\Programme\QuickTime\QTSystem\
Kann auch sein, dass die Leerzeichen im Pfad zum ATI Control Panel stören, daher habe ich den Pfad mal entfernt.
Und der Pfad zum JDK sollte genügen, weil da ja auch ein Interpreter mit drin ist.
Arbeitest du komplett auf der Console oder rufst du nur java darauf auf, um dein Programm zu starten?
Java ist case sensitive.
Möglicherweise hast du den Klassennamen im Code groß geschrieben (hast also eine Klasse mit großem Anfangsbuchstaben erzeugt), übergibst sie dem Interpreter aber klein geschrieben.
Wie lautet die genaue, komplette Fehlermeldung?
Ich schreibe die Programme im Emacs und mache den Rest auf der Konsole.
Groß- und Kleinschreibung habe ich schon berücksichtigt. Ich habe auch - wie gesagt - andere Test-Programme aus dem Internet, die garantiert laufen sollten, ausprobiert.
Die Fehlermeldung ist immer die gleiche (siehe mein erstes Posting)!
Hast du auch schon mal probiert, die java-Dateien ins bin-Verzeichnis deiner Java-Installation zu kopieren?
Wenn nicht, mach das mal und rufe von dort aus mal den Interpreter auf.
hatte das gleiche problem.
die lösung bei mir war: das *.jar mit der java.exe aus dem system32-ordner starten. (doppelklick -> öffnen mit)
inzwischen geht es auch über die konsole wieder .. denke es lag an zu vielen installierten jdk's und jre's. hatte glaube ich alles außer das aktuelle jdk runtergeschmissen, dann ging es.
Hallo, hab da auch ein kleines Problem beim Ausführen der Konsolenanwendung. Programmiere in Microsoft Visual J# und wenn ich das Programm ausführe macht er das auch aber schließt direkt wieder. Gibt es da noch einen Befehl den ich noch drunter setzen muss oder was muss ich machen?
Kannst du dein Problem etwas präziser beschreiben?
Wie startest du deine Anwendung? Wenn du sie in einer Batchdatei startest, kannst du die Console noch geöffnet lassen. Du schreibst dann als letzten Befehl in der Batchdatei dann einfach pause.
Ich geb meinen Text normal mit System.out.println(...) aus un geh dann auf starten, dann erscheint die Konsole un schließt sich gleich wieder.
Bei C# weiß ich, dass man noch Console.readline drunter setzen muss aber bei J# hab ich keine Ahnung wieso dat so net funzt hab auch schon bisschen experimentiert aber hat alles net geklappt