PDA

View Full Version : Fehler beim Starten von Java Programm



Seiten : [1] 2

Nili
12-09-02, 09:08
Hallo,

versuch gerade mein erstes "Hello world" Programm zum Laufen zu bekommen. Kompilieren läuft sauber durch, aber sobald ich das Programm ausführen möchte kommen diese Fehlermeldung:

java.lang.NoClassDefFoundError: /home/Java/test/Test
java/lang/Throwable.<init>(Ljava/lang/String http://www.as400-forum.de/ubb/wink.gifV+4 (Throwable.java:90)
java/lang/LinkageError.<init>(Ljava/lang/String http://www.as400-forum.de/ubb/wink.gifV+1 (LinkageError.java:39)
java/lang/NoClassDefFoundError.<init>(Ljava/lang/String http://www.as400-forum.de/ubb/wink.gifV+1 (NoClassDefFoundError.java:43)
Java-Programm mit Ausgangscode 1 beendet


Wäre über jeden Tipp dankbar, bin totaler Java Anfänger.

Danke!

P.S. neuste GroupPTF ist eingespielt.

torsten
12-09-02, 11:25
Hallo Nili,

ich vermute deine Klasse heisst Test.class und befindet sich im Package test.
Dann sollte sich Test.class im Verzeichnis
../test befinden und der Aufruf aus der Shell so lauten:

java test.Test

(Der Aufruf erfolgt aus dem Verzeichnis, das
über /test liegt)

Gruß

Torsten

Brainbug
02-09-04, 23:19
Hallo,

ohne Quellcode ist das schwer zu beantworten.

Ich programmiere zwar schon länger mit Java, habe jetzt aber ein ähnliches Problem: ich kann keine in Bytecode übersetzten Programme von der Konsole aus mit dem Interpreter starten. Nicht mal das folgende einfache Programm:


public class HalloWelt {
public static void main(String[] args) {
System.out.println("Hallo Welt!");
}
}

Die .class-Datei ist da:


Verzeichnis von C:\Eigene Dateien\Projekte\Java\Hallo Welt
10.04.2004 18:04 <DIR> .
10.04.2004 18:04 <DIR> ..
02.09.2004 21:07 530 HalloWelt.class
02.09.2004 21:07 147 HalloWelt.java
2 Datei(en) 677 Bytes
2 Verzeichnis(se), 63.501.914.112 Bytes frei

Der CLASSPATH ist gesetzt:


CLASSPATH="C:\Eigene Dateien\Projekte\Java\Hallo Welt"

Dennoch bekomme ich diesen Fehler:


C:\Eigene Dateien\Projekte\Java\Hallo Welt>java HalloWelt
Exception in thread "main" java.lang.NoClassDefFoundError: HalloWelt

Die java.exe wird gefunden, das ist nicht das Problem:


C:\Eigene Dateien\Projekte\Java\Hallo Welt>java -version
java version "1.5.0-rc"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-rc-b63)
Java HotSpot(TM) Client VM (build 1.5.0-rc-b63, mixed mode, sharing)

(Hat übrigens vorher mit Version 1.4 auch nicht funktioniert.)

Achso: ich kann das Programm starten, aus dem Java-Editor (http://www.bildung.hessen.de/abereich/inform/skii/material/java/editor.htm) heraus zum Beispiel, und auf einem anderen Rechner sogar auf der Konsole. Aber nicht an diesem Rechner. Welche Einstellung ist dafür verantwortlich?

Danke für Tips!

Brainbug

BenderD
03-09-04, 09:06
Hallo,

Class not found ist immer ein Vertipper, oder ein Problem mit dem Classpath.

im Falle Brainburg muss der Classpath lauten:
CLASSPATH="C:\Eigene Dateien\Projekte\Java"

@OP
es macht keinen Sinn solche Fragen mit solch dürftigen Angaben zu stellen. Gebraucht wird:
- möglichst kurzer Code, der das Problem verursacht.
- kurze Beschreibung was man macht (Aufruf, wie wo)
- Fehlersymptome

mfg

Dieter Bender




Der CLASSPATH ist gesetzt:


CLASSPATH="C:\Eigene Dateien\Projekte\Java\Hallo Welt"

Dennoch bekomme ich diesen Fehler:


C:\Eigene Dateien\Projekte\Java\Hallo Welt>java HalloWelt
Exception in thread "main" java.lang.NoClassDefFoundError: HalloWelt

Brainbug
04-09-04, 02:40
Hallo,

danke für die Antwort.

im Falle Brainburg muss der Classpath lauten:
CLASSPATH="C:\Eigene Dateien\Projekte\Java" Leider löst dies das Problem nicht:


C:\Eigene Dateien\Projekte\Java\Hallo Welt>set classpath
CLASSPATH="C:\Eigene Dateien\Projekte\Java"

Der Classpath ist also wie vorgeschlagen eingestellt. Dennoch:


C:\Eigene Dateien\Projekte\Java\Hallo Welt>java HalloWelt
Exception in thread "main" java.lang.NoClassDefFoundError: HalloWelt

Wäre also für weitere Hinweise dankbar.

Brainbug

PS: ich hab das auch nochmal vorsichtshalber mit dem Verzeichnisnamen ohne Leerzeichen versucht (Verzeichnisname=Klassenname), ohne Erfolg.

BenderD
04-09-04, 09:17
Hallo Brainburg,

ich habe bei meiner Antwort die zusätzliche Verzeichnishierarchie übersehen. Der ursprüngliche Classpath sieht eigentlich OK aus.


Hallo,

Achso: ich kann das Programm starten, aus dem Java-Editor (http://www.bildung.hessen.de/abereich/inform/skii/material/java/editor.htm) heraus zum Beispiel, und auf einem anderen Rechner sogar auf der Konsole. Aber nicht an diesem Rechner. Welche Einstellung ist dafür verantwortlich?

Danke für Tips!

Brainbug

Der einzige Ansatz, den ich aus der Ferne sehe, hängt mit dem Editor zusammen. Falls der von IBM ist, könnte der irgendwas in der Ablaufumgebung verdrechselt haben. Lass Dir doch mal am Console Fenster mit set den Stand der Umgebungsvariablen ausgeben.
Überprüfe auch nochmal alle Pfadangaben und Namen auf Groß/Kleinschreibung, führende und folgende Blanks und auf eventuelle "unechte" Blanks (geht eventuell nur mit rename der Verzeichnisse).
Möglicherweise ist auch irgendwas mit dem Classloader der Java Installation von dem "Editor" verdrechselt worden, welcher ist das denn und ist der auch auf anderen Büchsen drauf?

mfg

Dieter Bender

Brainbug
04-09-04, 13:17
Hi Bender,

es handelt sich (wie auch oben bereits verlinkt um den Java-Editor von G. Röhner (http://www.bildung.hessen.de/abereich/inform/skii/material/java/editor.htm), den ich übrigens sehr empfehlen kann. Er stellt (wie unten zu sehen) den Classpath um, was aber auf den anderen Rechnern, auf denen er auch installiert ist, kein Problem darstellt. Im übrigen wurde ja wie oben beschrieben der Pfad auch bereits versuchsweise manuell wieder geändert.

Hier sind meine Umgebungsvariablen:



ALLUSERSPROFILE=C:\Dokumente und Einstellungen\All Users
APPDATA=C:\Dokumente und Einstellungen\[mein Name]\Anwendungsdaten
CLASSPATH="C:\WINDOWS\System32\QTJava.zip"
CommonProgramFiles=C:\Programme\Gemeinsame Dateien
COMPUTERNAME=RECHNERComSpec=C:\WINDOWS\system32\cm d.exe
HOMEDRIVE=C:
HOMEPATH=\Dokumente und Einstellungen\[mein Name]
include=[Einstellungen für Visual Sudio]
lib=[Einstellungen für Visual Studio]
LOGONSERVER=\\RECHNER
MSDevDir=[Einstellungen für Visual Studio]
NUMBER_OF_PROCESSORS=1
OS=Windows_NT
Path=C:\WINDOWS\system32;
C:\WINDOWS;
C:\WINDOWS\System32\Wbem;
C:\Programme\ATI Technologies\ATI Control Panel;
[Einstellungen für Visual Studio];
C:\Programme\WebServ\perl\bin;
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WS F;.WSH
PHP_PEAR_BIN_DIR=@@root@@\php
PHP_PEAR_DATA_DIR=@@root@@\php\pear\data
PHP_PEAR_DOC_DIR=@@root@@\php\pear\docs
PHP_PEAR_INSTALL_DIR=@@root@@\php\pear
PHP_PEAR_PHP_BIN=@@root@@\php\cli\php.exe
PHP_PEAR_SYSCONF_DIR=@@root@@\php
PHP_PEAR_TEST_DIR=@@root@@\php\pear\tests
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 Family 6 Model 8 Stepping 1, AuthenticAMD
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=0801
ProgramFiles=C:\Programme
PROMPT=$P$G
QTJAVA="C:\WINDOWS\System32\QTJava.zip"
SESSIONNAME=Console
SystemDrive=C:
SystemRoot=C:\WINDOWS
TEMP=C:\DOKUME~1\[mein Name]\LOKALE~1\Temp
TMP=C:\DOKUME~1\[mein Name]\LOKALE~1\Temp
USERDOMAIN=RECHNER
USERNAME=[mein Name]
USERPROFILE=C:\Dokumente und Einstellungen\[mein Name]
windir=C:\WINDOWS

Wer liest daraus die Lösung?

Brainbug

BenderD
05-09-04, 09:49
Hi Bender,

es handelt sich (wie auch oben bereits verlinkt um den Java-Editor von G. Röhner (http://www.bildung.hessen.de/abereich/inform/skii/material/java/editor.htm), den ich übrigens sehr empfehlen kann. Er stellt (wie unten zu sehen) den Classpath um, was aber auf den anderen Rechnern, auf denen er auch installiert ist, kein Problem darstellt. Im übrigen wurde ja wie oben beschrieben der Pfad auch bereits versuchsweise manuell wieder geändert.

Hier sind meine Umgebungsvariablen:



ALLUSERSPROFILE=C:\Dokumente und Einstellungen\All Users
APPDATA=C:\Dokumente und Einstellungen\[mein Name]\Anwendungsdaten
CLASSPATH="C:\WINDOWS\System32\QTJava.zip"
CommonProgramFiles=C:\Programme\Gemeinsame Dateien
COMPUTERNAME=RECHNERComSpec=C:\WINDOWS\system32\cm d.exe
HOMEDRIVE=C:
HOMEPATH=\Dokumente und Einstellungen\[mein Name]
include=[Einstellungen für Visual Sudio]
lib=[Einstellungen für Visual Studio]
LOGONSERVER=\\RECHNER
MSDevDir=[Einstellungen für Visual Studio]
NUMBER_OF_PROCESSORS=1
OS=Windows_NT
Path=C:\WINDOWS\system32;
C:\WINDOWS;
C:\WINDOWS\System32\Wbem;
C:\Programme\ATI Technologies\ATI Control Panel;
[Einstellungen für Visual Studio];
C:\Programme\WebServ\perl\bin;
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WS F;.WSH
PHP_PEAR_BIN_DIR=@@root@@\php
PHP_PEAR_DATA_DIR=@@root@@\php\pear\data
PHP_PEAR_DOC_DIR=@@root@@\php\pear\docs
PHP_PEAR_INSTALL_DIR=@@root@@\php\pear
PHP_PEAR_PHP_BIN=@@root@@\php\cli\php.exe
PHP_PEAR_SYSCONF_DIR=@@root@@\php
PHP_PEAR_TEST_DIR=@@root@@\php\pear\tests
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 Family 6 Model 8 Stepping 1, AuthenticAMD
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=0801
ProgramFiles=C:\Programme
PROMPT=$P$G
QTJAVA="C:\WINDOWS\System32\QTJava.zip"
SESSIONNAME=Console
SystemDrive=C:
SystemRoot=C:\WINDOWS
TEMP=C:\DOKUME~1\[mein Name]\LOKALE~1\Temp
TMP=C:\DOKUME~1\[mein Name]\LOKALE~1\Temp
USERDOMAIN=RECHNER
USERNAME=[mein Name]
USERPROFILE=C:\Dokumente und Einstellungen\[mein Name]
windir=C:\WINDOWS

Wer liest daraus die Lösung?

Brainbug

Interessant wäre hier der set direkt vor dem Aufruf Deiner Java Klasse, dieser hier bringt wenig weiter.
Hast Du übrigens mal versucht den Classpath beim Java Aufruf als Parameter mitzugeben (siehe auch Java Doku)? Geht es dann ? Falls das auch nicht geht, würde ich sagen, dass die Java Installation einen Knacks hat.

mfg

Dieter Bender

Brainbug
05-09-04, 15:10
Interessant wäre hier der set direkt vor dem Aufruf Deiner Java Klasse, ...
Siehe Posting #5. Ich glaube allmählich auch, dass es an der Installation liegt (obwohl ich extra 1.4 deinstalliert und 1.5 installiert habe, um das Problem zu lösen - was aber ja nichts gebracht hat...). Gib mir bitte mal einen Tip, wie ich sicherstellen kann, das gesamte Java-System zu deinstallieren (inklusive dieses Fehlers).

Brainbug

BenderD
05-09-04, 21:06
Hallo,

die Java Runtime ist eigentlich System unabhängig und damit auch Installationsunabhängig bedienbar; oft werden aber Systemeigenschaften mitbenutzt (path, classpath). Deshalb der Hinweis mit der Angabe des Classpaths im Aufruf (java -cp ... HelloWorld). In dieser Sicht der Dinge reicht eigentlich das löschen des Verzeichnisses zur Deinstallation. Vorteil bei dieser Vorgehensweise ist ebenfalls, dass man ohne Probleme verschiedene JVM Versionen nebeneinander haben kann. Editoren gehen meist (ausser IBM) so vor und deswegen funzt es meist.
Wichtig ist immer noch, dass alles Case sensitive ist (Vorsicht: Windows kann das nicht wirklich) und dass Blanks immer und stets mitgezählt werden (Vorsicht: Windows kann das nicht wirklich, mit seltsamen Effekten).

mfg

Dieter Bender


Siehe Posting #5. Ich glaube allmählich auch, dass es an der Installation liegt (obwohl ich extra 1.4 deinstalliert und 1.5 installiert habe, um das Problem zu lösen - was aber ja nichts gebracht hat...). Gib mir bitte mal einen Tip, wie ich sicherstellen kann, das gesamte Java-System zu deinstallieren (inklusive dieses Fehlers).

Brainbug