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



## Marc74 (19. Aug 2008)

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":

```
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:

```
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 !


----------



## SlaterB (19. Aug 2008)

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 (19. Aug 2008)

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


----------



## Marc74 (19. Aug 2008)

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


----------



## SlaterB (19. Aug 2008)

das klingt fast so als hättest du meine Tipps nicht befolgt


----------



## Marc74 (20. Aug 2008)

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


----------



## SlaterB (20. Aug 2008)

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


----------



## Marc74 (20. Aug 2008)

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


----------



## SlaterB (20. Aug 2008)

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


----------

