class wird nicht gefunden?

Unterstrom

Mitglied
Hallo Forum,

Ich bin noch neu mit Java und programmieren allgemein. Mit der SuFu habe ich nichts gefunden was mir weiterhilft, hier also meine Frage:
Ich habe mit dem Windows Editor etwas geschrieben und per cmd eine class-datei erstellt.(jdk1.6.0_20) Jetzt will ich die Datei auch per cmd zum laufen bringen, aber sie wird irgentwie nicht gefunden. Das steht im cmd:

C:\Dokumente und Einstellungen\Nico>C:\Programme\Java\jdk1.6.0_20\bin\java C:\Ja
vakram\lol\cool
Exception in thread "main" java.lang.NoClassDefFoundError: C:\Javakram\lol\cool
Caused by: java.lang.ClassNotFoundException: C:\Javakram\lol\cool
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: C:\Javakram\lol\cool. Program will exit.

Danke im Vorraus!
 
Heißt deine Java-Datei genauso wie deine Klasse?
Der Fehler tritt dann meines Wissens auf^^

Beispiel:

Wenn deine Klasse "HelloWorld" heißt, nenne deine Datei auch
"HelloWorld" dann geh wieder mit der cmd in dein Verzeichnis.

Wenn du die Klasse erfolgreich erstellt hast (mit javac cool.java)
müsstest du sie eigentlich mit "java cool" ausführen können.
 
Die 2 Dinger heissen gleich. Also das eine heisst 'cool' und das andere 'cool.class'
Hier ist mal der Code:
Java:
public class cool{
public static void main(String[ ] args)   {
int i;
i = 3 + 4;
System.out.println ("Das Ergebnis ist: " + i) ;
}
}
 
Der Befehl java erwartet den Klassennamen als Parameter - nicht die Datei oder den Datei Pfad. Damit die VM die Klasse findet muss diese im CLASSPATH zu finden sein oder der Befehl java muss im Verzeichnis der Klasse aufgerufen werden. Heißt die Klasse cool, oder ist sie noch Bestandteil eines Packages?

Im ersteren Fall funktioniert z.B folgende Eingaben in der Eingabeaufforderung:
Code:
Set CLASSPATH=C:\Javakram\lol
C:\Programme\Java\jdk1.6.0_20\bin\java cool
Wobei in Java Klassennamen üblicherweise mit einem Großbuchstaben beginnen.
 
Was genau meinst du mit "für cmd ist jetzt alles in Ordnung"? Heißt das, javac kompiliert den Code ohne Fehlermeldung?
Mal ne ganz blöde Vermutung: Führst du das Programm denn auch aus? Also:
[c]javac cool.java[/c]
und anschließend (wenn es keine Fehlermeldung gab)
[c]java cool[/c]
?
 
Was genau meinst du mit "für cmd ist jetzt alles in Ordnung"? Heißt das, javac kompiliert den Code ohne Fehlermeldung?
Mal ne ganz blöde Vermutung: Führst du das Programm denn auch aus? Also:
[c]javac cool.java[/c]
und anschließend (wenn es keine Fehlermeldung gab)
[c]java cool[/c]
?

Was heisst 'Führst du es aus?'
Erst hab ich die Java-Datei mit javac 'behandelt' und dann die class-Datei mit java.
Und cmd zeigt keine Fehlermeldungen an. Aber das Programm will nicht starten. 🙁
 
Ich war anhand deines Geschriebenen nicht ganz sicher, ob du das Programm wirklich kompilierst UND startest oder ob du nach dem Kompilieren vielleicht vor dem Kommandozeilenprompt sitzt und dich wunderst, warum nichts passiert 😀

Kommt auch keine Fehlermeldung, wenn du es mit [c]java cool[/c] startest?
 
Hast du dich mit der Konsole denn überhaupt in den Ordner navigiert in dem deine Datei liegt?

Wenn der compiler ohne zu meckern die Datei annimmt und die Datei wirklich GENAU (auch groß-klein) so heißt wie die Klasse kann es ja nicht mehr an soviel sonst liegen.

Edit: du hast in der Main ein String[ ] args statt String[] args ... test das mal.
 
Wie navigiert?
Jetzt geht eh garnichts mehr. Ich mache das selbe wie immer und bekomme irgentwelche Fehlermeldungen an den Kopf geknallt -.-' von wegen das System kann den Pfad nicht finden oder so... Dann muss das System mal gescheit gucken 😡
Also... Ich habe wieder nur eine Javadatei im Ordner 'C:\Javakram' und die heisst 'cool'.
Wäre jemand so nett, zu schreiben wie ihr das jetzt zum laufen bringen würdet? Weil bei mir wirklich grad garnichts mehr läuft.
 
Du machst Konsole auf:
Code:
c:
cd c:\Javakram
dir cool.*
// hier guckst du ob die Datei tatsächlich da ist
del cool.class
// für alle Fälle
javac cool.java
java cool
 
Zuletzt bearbeitet:
Kleiner Tipp: Nicht so unter Strom stehen 😉
Nein wirklich, mit rauchendem Kopf und Ärger im Bauch erziehlt man nicht viel, schon gar nicht bei einem Rechner. Der ist noch dümmer als Brot und du musst ihm alles genau sagen. Von sich aus wird das System leider nicht genauer gucken…

Also:
- Wie genau gehst du vor?
- In welchem Verzeichnis befindest du dich beim Kompilieren/Ausführen?
- Wie lauten die Fehlermeldungen?
 
Wie ich vorgehe?

-EInen Code im Editor schreiben und unter cool.java abspeichern.
-cmd öffnen und javac anwenden. ich muss die Pfade angeben, weil der Befehl nich funktioniert.
-Das selbe mit Java. Dabei entsteht das obere Problem.
Und mit dem Code von Michael reargiert nichts.

Sorry wegen Doppelpost, aber hab kein Edit gefunden😳
 
Naja, wenn der Befehl nicht funktioniert und du die Meldung "Der Befehl 'javac' wurde nicht gefunden" erhältst, dann ist javac wohl gar nicht installiert.
Hast du dir hier das Java Development Kit (JDK) heruntergeladen und es installiert?
 
Nur weil es nicht gefunden wird, heißt es nicht, dass es nicht da ist... Du musst ihm ja noch sagen wo er suchen muss. Dafür ist die PATH-Variable da
(aber Abwesenheit der JDK ist auch eine Möglichkeit)
 
Naürlich habe ich das Installiert. Es ist ja auch ein Pfad zu javac. Und bei Path habe ich auch mit einem Semikolon getrennt, den Pfad bis zu 'bin' geschrieben. Aber trotzdem geht es nicht.
 
Nur weil es nicht gefunden wird, heißt es nicht, dass es nicht da ist... Du musst ihm ja noch sagen wo er suchen muss. Dafür ist die PATH-Variable da
(aber Abwesenheit der JDK ist auch eine Möglichkeit)
Ja, das stimmt, fiel mir bloß nicht ein, weil ich noch nie unter Windows programmiert habe und das Problem mit der Umgebungsvariablen nicht kenne ^^'
 
Bist du dir sicher, dass du auch wirklich den richtig Pfad angegeben hast? Kopier den in den Explorer und drück enter... vllt hast du ja eine andere Version oder was auch immer.
 
Ich meine mich zu erinnern, dass man
Code:
java
in dem Verzeichnis ausführen muss, in dem die class-Datei liegt. Wechsel mal in das Verzeichnis, wo cool.class ist, und führe dort
Code:
java cool
aus.
 
Das war doch genau das, das ich dich schon gefragt hatte 😉

du musst dich mit der Konsole in den Ordner navigieren in dem deine .java liegt - die .class wird mit dem Befehl "javac" erzeugt - und zwar im gleichen Verzeichnis wie die .java.

Liegt z.B. eine test.java unter C:\Home\Programme\Files\Java\test.java
und ich öffne die Konsole
startet die Konsole bei C:\Home
hier "javac test.java" einzugeben bringt garnichts - genausowenig wie "java test"
du musst dich mit "cd" durchnavigieren.
Entweder durch
cd Programme
cd Files
cd Java
javac test.java
java test

oder cd Programme\Files\Java
javac test.java
java test

mit "cd .." bewegst du dich in den vorigen Ordner in der Struktur
mit "dir" kannst du den Ordnerinhalt anzeigen lassen.

Bei Linux kannst du dich ebenfalls mit cd und cd .. bewegen, hier aber auf groß-Kleinschreibung achten.
Und anstatt "cd" gibt es bei Linux "ls" 🙂
Hoffe jetzt gibt es keine Probleme mehr 😉
 
Und solche Infos kriegt man von einem Dozenten mit einem Doktortitel in der Uni eingetrichtert 😉

Asche auf sein Haupt und danke für die Korrektur 🙂
 

Zurück
Oben