WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   Java-Error (NoClassDefFoundError) (http://www.wcm.at/forum/showthread.php?t=100941)

cenus 26.06.2003 19:36

Java-Error (NoClassDefFoundError)
 
Ich fange gerade an mit java zu programmieren und habe schon beim helloworld programm ein problem. ich habe das jdk1.3.0_02 installiert. java -version gibt die version 1.4.0_01-b03 aus.

folgendes problem: ich habe den classpath auf z.b. c:\myprogs gesetzt.
wenn ich dort das helloworld-programm mit javac HelloWorld.java übersetze und mit java HelloWorld ausführe, dann funktioniert alles prächtig.

ich habe nun ein unterverzeichnis angelegt und befinde mich in C:\myprogs\bsp1. wenn ich dort nun das neue Programm ServusWien (=HelloWorld nur HelloWorld durch ServusWien ersetzt) übersetze und dann ausführen will, erhalte ich folgende Fehlermeldung:

C:\myprogs\bsp1>java ServusWien
Exception in thread "main" java.lang.NoClassDefFoundError: ServusWien

Kopiere ich den Sourcecode nach myprogs und übersetze ich es dort, dann kann ich es auch fehlerfrei ausführen. Wenn ich dann wieder ins bsp1 Verzeichnis wechsle und dort das Programm wieder übersetze, dann kann ich es auch ausführen.

Ich vermute, daß es mit der Classpath-Variable zusammenhängt. Kann mir jemand weiterhelfen?

Tarjan 26.06.2003 19:43

Deine Klasse muss immer im CLASSPATH erreichbar sein. D.h. das Verzeichnis welches in dem deine Klasse liegt muss im Classpath eingetragen sein.

Am Anfang solltest Du vielleicht . eintragen. Damit ist das aktuelle Verzeichnis immer im Classpath.

cenus 26.06.2003 21:03

@Tarjan
Kann ich auch zwei oder mehrere Pfade als classpath setzen?

z.b. SET CLASSPATH=C:\MYPROGS; .

oder nur

SET CLASSPATH=.

Wie ist es am besten?

Danke auf jeden Fall für den Tipp.

Tarjan 27.06.2003 07:13

Du kannst beliebig viele Pfade im Classpath setzten, also zB. CLASSPATH = .;C:\MYPROGS;D:\MORECLASSES etc. Der Classpath auf meinen Arbeitsrechner ist 6 Zeilen lang.

Es ist anzuraten den . ,also das eigene Verzeichnis als erstes in den Classpath reinzuschreiben. Die Java VM durchsucht nämlich den Classpath in der angegebenen Reihenfolge bis er die Klasse findet. Und somit wird das aktuelle Verzeichnis zuerst durchsucht. Befindet sich übrigens ein gleichnamiges Class File zwei oder mehrmals im Classpath, so wird das genommen, welches als erstes gefunden wird.

cenus 27.06.2003 21:07

@Tarjan:
Vielen Dank für deine Hilfe!! Ich werde es gleich ausprobieren.


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:13 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag