Java Anfänger könnte Unterstützung gebrauchen.

Status
Nicht offen für weitere Antworten.
M

Marc74

Gast
Hallo zusammen, habe so aus Spaß privat mal angefangen mich in Java (JDK Version 6 Update 7) einzuarbeiten. Komplettes Paket habe ich nach d: downgeloaded. Jetzt habe ich mal kleine Testprogramme geschrieben und per Texteditor direkt in d:\jdkXX\bin gespeichert (direkt in \bin weil die PATH Variable aus sytemtechnischen Gründen nicht geändert werden kann).

Hier mal das Beispielprogramm "Lattenzaun":
Code:
class Lattenzaun
{
public static void main ( String[] args )
{
System.out.println("Es war einmal ein Lattenzaun");
System.out.println("mit Zwischenraum, hindurchzuschaun");
System.out.println();
System.out.println("Ein Architekt, der dieses sah,");
System.out.println("stand eines Abends ploetzlich da - ");
System.out.println();
System.out.println("und nahm den Zwischenraum heraus");
System.out.println("und baute draus ein grosses Haus.");
}

Dann habe ich mit dem Befehl "javac" das Programm "Lattenzaun.java" kompiliert. Das ging auch erfolgreich. Cursor hat geblinkt und "Lattenzaun.class" wurde erstellt.

Wenn ich aber dann mit Befehl "java Lattenzaun" das Programm ausführen möchte erscheint die FM:
Code:
Exception in thread "main" java.lang.NoClassDefFoundError: Lattenzaun
Caused by: java.lang.ClassNotFoundException: Lattenzaun
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)

Kann jemand weiterhelfen ?

Danke im voraus !
 
S

SlaterB

Gast
wenn du in der Konsole bist, prüfe das Vorhandensein von Lattenzaun.class per dir-Befehl

und führe testweise
java -cp . Lattenzaun
aus

-----

allgemein solltest du deine Klasse public deklarieren, müsste hier aber auch so gehen
 

Jonnsn

Bekanntes Mitglied
im den code oben fehlt aber ne spitze klammer am Ende.... sollte dann aber auch nicht kompilierbar sein
mit der Klammer läufts jedenfalls
 
M

Marc74

Gast
Hallo, habe die 2te spitze KLammer ergänzt, neu abgespeichert und kompliliert. Beim ausführen leider die identische FM. Ich vermute fast eher ein Problem bei der JDK / JRE Umgebung. Handelt sich um ein abgeshclossenes dienstliches Notebook mit jeder Menge installierter Java Versionen. Vielleicht gibt es hier Probleme. Werde alles nochmal neu instalieren.

Vielleich thabt IHr ja noch sonstige Ideen, ansonsten installiere ich neu.

Viele Grüße und vielen Dank im voraus !

Marc
 
S

SlaterB

Gast
das klingt fast so als hättest du meine Tipps nicht befolgt ;)
 
M

Marc74

Gast
Sorry slater, doch habe ich. Lattenzeun.class ist vorhanden.

Sorry, sorry hatte den Punkt direkt for "Lattenzaun" gesetzt und es erschien wiederum eine FM.

Mit dem korrekten Befehl = "Java -cp . Lattenzau" läuft das Programm ab !!
Was sagt dies nun aus ? Wo liegt mein Fehler ?

Beste Grüße aus Köln !

Marc
 
S

SlaterB

Gast
es sieht nun danach aus, als wäre eine System-Umgebungsvariable CLASSPATH gesetzt,
die festlegt, wo nach Java-Klassen gesucht wird,

die kann normalerweise komplett weg,
ansonsten solle sie auch den Punkt für das aktuelle Verzeichnis enthalten:
.;C:\myLib\..

mit -cp bei java kann man die Umgebungsvariable überschreiben
 
M

Marc74

Gast
Hmm im Onlinetutorial stand, daß man die Umgebungsvariable umgehen kann indem man die Programme direkt im jdk\bin verzeichnis speichert und ablaufen läßt. auch wenn das nicht gerade die "feine" art ist.

anscheinend stimmt das nicht. jedenfalls danke für den hinweis !

viele grüße !

marc
 
S

SlaterB

Gast
damit hat man die Datei direkt bei javac/ und kann sehr leicht
javac ..
java ..
aufrufen,
ohne dass diese Programme erst irgendwo gefunden werden müssen,
das hängt mit der PATH-Variable zusammen, weniger mit CLASSPATH
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben