[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    Sep 2002
    Beiträge
    47

    Unhappy Fehler beim Starten von Java Programm

    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 V+4 (Throwable.java:90)
    java/lang/LinkageError.<init>(Ljava/lang/String V+1 (LinkageError.java:39)
    java/lang/NoClassDefFoundError.<init>(Ljava/lang/String V+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.
    Ciao
    Nili

  2. #2
    Registriert seit
    Dec 2000
    Beiträge
    99

    Post

    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

  3. #3
    Registriert seit
    Sep 2004
    Beiträge
    5

    Ähnlich

    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:

    Code:
    public class HalloWelt {
      public static void main(String[] args) {
     	System.out.println("Hallo Welt!");
      }
     }
    Die .class-Datei ist da:

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

    Code:
    CLASSPATH="C:\Eigene Dateien\Projekte\Java\Hallo Welt"
    Dennoch bekomme ich diesen Fehler:

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

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

  4. #4
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    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

    Zitat Zitat von Brainbug

    Der CLASSPATH ist gesetzt:

    Code:
    CLASSPATH="C:\Eigene Dateien\Projekte\Java\Hallo Welt"
    Dennoch bekomme ich diesen Fehler:

    Code:
    C:\Eigene Dateien\Projekte\Java\Hallo Welt>java HalloWelt
    Exception in thread "main" java.lang.NoClassDefFoundError: HalloWelt
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  5. #5
    Registriert seit
    Sep 2004
    Beiträge
    5

    leider nicht

    Hallo,

    danke für die Antwort.
    Zitat Zitat von BenderD
    im Falle Brainburg muss der Classpath lauten:
    CLASSPATH="C:\Eigene Dateien\Projekte\Java"
    Leider löst dies das Problem nicht:

    Code:
    C:\Eigene Dateien\Projekte\Java\Hallo Welt>set classpath
       CLASSPATH="C:\Eigene Dateien\Projekte\Java"
    Der Classpath ist also wie vorgeschlagen eingestellt. Dennoch:

    Code:
    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.

  6. #6
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Hallo Brainburg,

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

    Zitat Zitat von Brainbug
    Hallo,

    Achso: ich kann das Programm starten, aus dem Java-Editor 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
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  7. #7
    Registriert seit
    Sep 2004
    Beiträge
    5
    Hi Bender,

    es handelt sich (wie auch oben bereits verlinkt um den Java-Editor von G. Röhner, 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:

    Code:
     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\cmd.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;.WSF;.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

  8. #8
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Zitat Zitat von Brainbug
    Hi Bender,

    es handelt sich (wie auch oben bereits verlinkt um den Java-Editor von G. Röhner, 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:

    Code:
     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\cmd.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;.WSF;.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
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  9. #9
    Registriert seit
    Sep 2004
    Beiträge
    5

    Hoffnungslos?

    Zitat Zitat von BenderD
    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

  10. #10
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    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

    Zitat Zitat von Brainbug
    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
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  11. #11
    Registriert seit
    Sep 2004
    Beiträge
    5
    Hallo,

    tatsächlich hat der Aufruf

    java -classpath ".;C:\Programme\Java SDK 1.5\jre\lib\rt.jar" [Klassenname]

    funktioniert... Vielen Dank an dieser Stelle auch an Herrn Röhner, den Programmierer des genannten Java-Editors für einen entsprechenden Hiweis. Bliebe die Frage, warum ich auf einem Rechner den cp mit angeben muss und auf einem (eigentlich JEDEM) anderen Rechner nicht...!?

    Brainbug

  12. #12
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Hallo,

    was immer Du treibst:

    Der CLASSPATH ist gesetzt:

    Code:
    CLASSPATH="C:\Eigene Dateien\Projekte\Java\Hallo Welt"
    Code:
    Code:
    C:\Eigene Dateien\Projekte\Java\Hallo Welt>set classpath
       CLASSPATH="C:\Eigene Dateien\Projekte\Java"
    Die korrekte Syntax ist:
    set CLASSPATH="C:\Eigene Dateien\Projekte\Java\Hallo Welt"

    Dabei auf Case sensitivity achten (CLASSPATH) und keine Blanks neben dem Gleichheitszeichen etc.
    Danach (!!!) kann man prüfen, ob alles passt mit set und ich würde erwarten, das bei Dir was nicht klappt.
    Auf anderen Rechnern mag das Verfahren klappen, weil dort kein CLASSPATH gesetzt ist und dann das aktuelle Verzeichnis für das namenlose Package immer mit genommen wird.

    mfg

    Dieter Bender
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

Similar Threads

  1. Starten Java auf dem PC
    By mk in forum NEWSboard Java
    Antworten: 4
    Letzter Beitrag: 11-12-06, 08:51
  2. Programm auf anderer AS400 starten
    By codierknecht in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 04-07-06, 11:52
  3. Java Programm aus ILE RPG aufrufen
    By PGMR in forum NEWSboard Java
    Antworten: 10
    Letzter Beitrag: 10-02-05, 10:33
  4. Java Programm aus ILE RPG aufrufen
    By PGMR in forum NEWSboard Programmierung
    Antworten: 0
    Letzter Beitrag: 02-02-05, 13:10
  5. Aufruf von Java Programm direkt aus RPG
    By mk in forum IBM i Hauptforum
    Antworten: 0
    Letzter Beitrag: 09-09-04, 08:22

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •