Hallo, Ich habe mit Eclipse auf meinem SuSE 9.1 Prof.-Topflappen eine Java-application geschrieben, die prima läuft wenn ich sie - aus Eclipse starte, - auf meinem Hauptrechner (SuSE 9.0 Prof) von der Konsole starte (java version 1.4.2), - unter Windows XP von der Eingabeaufforderung aus starte. Nur von der Konsole des Laptops (java version 1.4.2_03) aus lässt sie sich nicht starten und wirft eine Exception in thread "main" java.lang.NoClassDefFoundError: workspace/ T2E_Proj/T2E Die main-Methode liegt richtig in der Class T2E. Der Dateiname ist T2E.java Das Verhalten ist unabhängig davon ob ich -classpath setze oder nicht. Ein Schreibfehler beim Aufruf kann definitiv ausgeschlossen werden, da der Fehler seit 2 Wochen reproduzierbar auftritt und auf allen anderen Systemen die Chose ja funzt. Mit entsprechenden Aufrufscripten verhält es sich analog und die Zugriffsrechte sind alle auf 777 gesetzt. Eine Neuinstallation des SDK kommt nicht in Frage, da die Abhängigkeiten zu komplex sind und ich das System ständig nutze. Weiß jemand woran das liegen kann, insbesondere da Eclipse ja prima läuft! Gruß Jörg -- Lieber billige Vielfalt, als teure Einfalt; lieber lachende Pinguine als tanzende Büroklammen http://www.yourwebs.de
Hallo, Am Fri, 13 Aug 2004, Jörg Czeschla schrieb:
Ich habe mit Eclipse auf meinem SuSE 9.1 Prof.-Topflappen eine Java-application geschrieben, die prima läuft wenn ich sie [snip tale of woe]
Wie war das noch? "Write once -- debug everywhere"? -dn'*SCNR*'h -- Sorry, mit java kenne ich mich gar nicht aus, das ist mir einfach zu unportabel. -- Thorsten Kukuk in suse-linux
David Haller schrieb:
Hallo,
Am Fri, 13 Aug 2004, Jörg Czeschla schrieb:
Ich habe mit Eclipse auf meinem SuSE 9.1 Prof.-Topflappen eine Java-application geschrieben, die prima läuft wenn ich sie
[snip tale of woe]
Wie war das noch? "Write once -- debug everywhere"?
-dn'*SCNR*'h
...wenn man weiß wie es geht .... (Text vergessen!) :-(
Jörg Czeschla schrieb:
Hallo,
Ich habe mit Eclipse auf meinem SuSE 9.1 Prof.-Topflappen eine Java-application geschrieben, die prima läuft wenn ich sie - aus Eclipse starte, - auf meinem Hauptrechner (SuSE 9.0 Prof) von der Konsole starte (java version 1.4.2), - unter Windows XP von der Eingabeaufforderung aus starte. Nur von der Konsole des Laptops (java version 1.4.2_03) aus lässt sie sich nicht starten und wirft eine
Exception in thread "main" java.lang.NoClassDefFoundError: workspace/ T2E_Proj/T2E
Die main-Methode liegt richtig in der Class T2E. Der Dateiname ist T2E.java Das Verhalten ist unabhängig davon ob ich -classpath setze oder nicht. Ein Schreibfehler beim Aufruf kann definitiv ausgeschlossen werden, da der Fehler seit 2 Wochen reproduzierbar auftritt und auf allen anderen Systemen die Chose ja funzt. Mit entsprechenden Aufrufscripten verhält es sich analog und die Zugriffsrechte sind alle auf 777 gesetzt.
Eine Neuinstallation des SDK kommt nicht in Frage, da die Abhängigkeiten zu komplex sind und ich das System ständig nutze.
Weiß jemand woran das liegen kann, insbesondere da Eclipse ja prima läuft!
Gruß Jörg
Baue aus deiner Anwendung ein JAR-Archive. Packe darin alle benötigten Bibliotheken, wenn dies geht, mit JBuilder geht es, Netbeans zickt, Eclipse habe ich noch nicht getest. Sollte dies nicht gehen, lege dir einen Ordner an, in dem du alle Bibliotheken speichert und ihn zum CLASSPATH hinzufügst. Befehl: java -jar programm.jar Ich habe Linuxe/Winboxen im Einsatz auf allen laufen die Anwendungen. Andreas
Jörg Czeschla schrieb:
Exception in thread "main" java.lang.NoClassDefFoundError: workspace/ T2E_Proj/T2E
workspace.T2E_Proj.T2E? Seltsamer Name.
Die main-Methode liegt richtig in der Class T2E. Der Dateiname ist T2E.java
... und der voll qualifizierte Klassenname?
Das Verhalten ist unabhängig davon ob ich -classpath setze oder nicht. Ein Schreibfehler beim Aufruf kann definitiv ausgeschlossen werden, da der Fehler seit 2 Wochen reproduzierbar auftritt und auf allen anderen Systemen die Chose ja funzt. Mit entsprechenden Aufrufscripten verhält es sich analog und die Zugriffsrechte sind alle auf 777 gesetzt.
Falls alles nicht hilft, einfach mal public class Main { public static void main(String[] p_args) { System.out.println("Hallo Welt."); } } ohne Eclipse versuchen. Wegen der Rechte... -- Gruß, Alex
Hallo Alex. danke für den Tip, aber ich vergaß zu schreiben, dass andere Java-Programme auch nicht zu starten sind. Habe mir aber dennoch auf Deinen Tip hin nochmal 'ne "Hallo Welt" geschrieben, die sich zwar kompilieren ließ, aber mit der gleichen Fehlermeldung ebenfalls nicht startbar ist. Natürlich mit 777-Rechten.
workspace.T2E_Proj.T2E? Seltsamer Name.
ja, geb ich zu. Ist ein Arbeitsname gewesen.
Die main-Methode liegt richtig in der Class T2E. Der Dateiname ist T2E.java
... und der voll qualifizierte Klassenname?
import javax.swing.*; public class T2E { public static void main(String[] args) { T2EFrame frame = new T2EFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.show(); } } Ich versuche mal den Vorschlag von Andreas (danke ebenfalls), bin aber skeptisch. Langsam hab' ich das Gefühl, dass das ein gaaaaanz dämlicher Fehler ist: Die Hauptrechner laufen schon recht lange mit den üblichen im Laufe der Zeit anwachsenden Konfigurationen und die 9.1 in der SuSE-Standard-Konfig. auf dem Laptop ist recht neu und noch nie zum Java schreiben verwendet worden. Gruß Jörg
* Jörg Czeschla
danke für den Tip, aber ich vergaß zu schreiben, dass andere Java-Programme auch nicht zu starten sind.
[...] was sagt denn $ java -version $ javac -version $ which java $ which javac $ echo --$CLASSPATH-- Gruß, Bernhard -- _________ http://www.bwalle.de _________________________________________________ I've no idea when Linus is going to release 2.0.24, but if he takes too long I'm going to release a 2.0.24unoff and he can sound off all he likes. -- Alan Cox
Hallo Bernhard
was sagt denn
$ java -version
java version "1.4.2_03" Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_03-b02) Java HotSpot(TM) Client VM (build 1.4.2_03-b02, mixed mode)
$ javac -version
invalid flag: -version
$ which java
/usr/lib/java/bin/java
$ which javac
/usr/lib/java/bin/javac
$ echo --$CLASSPATH--
je nachdem: ---- ist die Standardeinstellung aber mit gesetztem und Ausgabe von --/home/webs/workspace/T2E_Proj-- läufts auch nicht. Sonst ist doch aber alles normal oder? Gruß Jörg -- Lieber billige Vielfalt, als teure Einfalt; http://www.yourwebs.de
Hallo, ich bin mir nicht ganz sicher, bin kein absoluter Java Experte, aber es sollte möglich sein die Exception abzufangen, wie, das müsste ich mir im Code anschauen. Im Falle, kannst du dann mit der Methode NoClassDefFoundError.getMessage() vielleicht etwas mehr erfahren, zum Beispiel welche Class Definition denn fehlen soll. Ist dein Code OS? Ich kann es ja mal lokal testen... Noch eine Bemerkung: Ich hatte mal einen ähnlichen Fehler als ich mit Eclipse ein Jar-File erzeugte und dies unter Windows starten wollte. Die Lösung war, dass ich zu schnell "Finish" gedrückt hatte. Der Assistent zum Erzeugen von Jar-Files (Datei->Export->jar) bietet "Finish" und "next" an. Mit "next" kann man sich durch weitere Optionen für das Jar-File klicken, unter anderem kann man definieren, welche die Main-Class, also die Klasse ist, welche die main Methode enthällt. Gruss, Bothom P.S. Wie ich gesehen habe hast du den Webauftritt der Kulturbühne gestaltet. Bin schon öfter auf deren Veranstaltugen gewesen ;-)) On Friday 13 August 2004 15:15, Jörg Czeschla wrote:
Hallo Bernhard
was sagt denn
$ java -version
java version "1.4.2_03" Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_03-b02) Java HotSpot(TM) Client VM (build 1.4.2_03-b02, mixed mode)
$ javac -version
invalid flag: -version
$ which java
/usr/lib/java/bin/java
$ which javac
/usr/lib/java/bin/javac
$ echo --$CLASSPATH--
je nachdem: ---- ist die Standardeinstellung aber mit gesetztem und Ausgabe von --/home/webs/workspace/T2E_Proj-- läufts auch nicht. Sonst ist doch aber alles normal oder?
Gruß Jörg -- Lieber billige Vielfalt, als teure Einfalt;
Jörg Czeschla schrieb:
Habe mir aber dennoch auf Deinen Tip hin nochmal 'ne "Hallo Welt" geschrieben, die sich zwar kompilieren ließ, aber mit der gleichen Fehlermeldung ebenfalls nicht startbar ist. Natürlich mit 777-Rechten.
Das ist schon sehr seltsam, da das Hallo-Welt-Programm außer der JRE und rt.jar eigentlich keine weiteren Voraussetzungen benötigt. Auch deren Rechte mal überprüfen. Falls immer noch ein java.lang.NoClassDefFoundError kommt, und das .class-File 777 im aktuellen Directory existiert und . in $CLASSPATH enthalten ist, würde ich die JRE oder JDK neu installieren. Geht ja auch parallel zu einer bereits vorhandenen Installation.
Hi,
Das ist schon sehr seltsam, da das Hallo-Welt-Programm außer der JRE und rt.jar eigentlich keine weiteren Voraussetzungen benötigt. Auch deren Rechte mal überprüfen.
sind ok
Falls immer noch ein java.lang.NoClassDefFoundError kommt, und das .class-File 777 im aktuellen Directory existiert und . in $CLASSPATH enthalten ist, würde ich die JRE oder JDK neu installieren.
wie? Die Neuinstallation hatte ich vor ein paar Tagen auch schon in Angriff genommen, bin aber dann vor den Abhängigkeiten bei der Deinstallation der alten zurückgeschreckt. Gruß Jörg -- Lieber billige Vielfalt, als teure Einfalt; lieber lachende Pinguine als tanzende Büroklammen http://www.yourwebs.de
Jörg Czeschla schrieb:
Falls immer noch ein java.lang.NoClassDefFoundError kommt, und das .class-File 777 im aktuellen Directory existiert und . in $CLASSPATH enthalten ist, würde ich die JRE oder JDK neu installieren.
wie?
Stell' doch nicht so schwere Fragen ;-) Der einfachste Weg sollte über die Installationsroutine Deine Distri führen: deinstallieren, neu installieren. Das sollte auch mit YAST machbar sein. Wie man das Problem mit den Abhängigkeiten löst, weiß ich leider nicht. Am besten mal in der suse-linux-Liste nachfragen. Eine andere Möglichkeit besteht darin, ein RPM oder ein selbstentpackendes Archiv bei Sun herunterzuladen und es damit zu versuchen. Oder Du kopierst das JRE bzw. JDK-Verzeichnis komplett von einem anderen System. Danach müssen noch die Variablen JAVA_HOME, JDK_HOME, evtl. JAVAC definiert sowie $JAVA_HOME/bin:$JAVA_HOME/jre/bin:$JAVA_HOME/jre/javaws in $PATH aufgenommen werden. Danach müsste die neue Parallelinstallation lauffähig sein - falls ich nichts Essentielles vergessen habe. -- Gruß, Alex
Dank Euch allen fürs Hirnschmalzopfer! An der Partition kann's nicht liegen, schon weil auf dem anderen System die ausführende Partition auch nicht mit exec gemountet ist und Java und das Programm zudem auf der gleichen Partition liegen. Ich denke, ich muss langfristig mal neu installieren. Eigentlich läuft's ja, nur halt nicht von der Konsole aus. Gruß Jörg -- Lieber billige Vielfalt, als teure Einfalt; http://www.yourwebs.de
Am Freitag, den 13.08.2004, 01:35 +0200 schrieb Jörg Czeschla:
Mit entsprechenden Aufrufscripten verhält es sich analog und die Zugriffsrechte sind alle auf 777 gesetzt.
Ist die Partition vielleicht nicht mit "exec" gemountet? Gruß, Ratti -- -o) fontlinge | Fontmanagement for Linux | Schriftenverwaltung in Linux /\\ http://freshmeat.net/projects/fontlinge/ _\_V http://www.gesindel.de https://sourceforge.net/projects/fontlinge/
* Jörg Roßdeutscher
Am Freitag, den 13.08.2004, 01:35 +0200 schrieb Jörg Czeschla:
Mit entsprechenden Aufrufscripten verhält es sich analog und die Zugriffsrechte sind alle auf 777 gesetzt.
Ist die Partition vielleicht nicht mit "exec" gemountet?
Nein, daran kann es nicht liegen. Java kann ja ausgeführt werden, sonst würde java -version in die Hose gehen. Und die Klassen selber müssen ja nicht ausführbar sein, für Java sind das Datendateien wie für OpenOffice.org eine .sxw-Datei. Gruß, Bernhard -- _________ http://www.bwalle.de _________________________________________________ Erst wenn der letzte Baum gerodet, der letzte Fluss vergiftet, der letzte Fisch gefangen ist, werdet ihr feststellen, dass man Geld nicht essen kann. -- Indianische Weisheit
Am Samstag, den 14.08.2004, 19:28 +0200 schrieb Bernhard Walle:
* Jörg Roßdeutscher
[2004-08-14 19:22]:
Ist die Partition vielleicht nicht mit "exec" gemountet?
Nein, daran kann es nicht liegen. Java kann ja ausgeführt werden, sonst würde java -version in die Hose gehen.
Aber java muß nicht auf der gleichen Partition liegen wie sein Programm. Gruß, Ratti -- -o) fontlinge | Fontmanagement for Linux | Schriftenverwaltung in Linux /\\ http://freshmeat.net/projects/fontlinge/ _\_V http://www.gesindel.de https://sourceforge.net/projects/fontlinge/
* Jörg Roßdeutscher
Am Samstag, den 14.08.2004, 19:28 +0200 schrieb Bernhard Walle:
* Jörg Roßdeutscher
[2004-08-14 19:22]: Ist die Partition vielleicht nicht mit "exec" gemountet?
Nein, daran kann es nicht liegen. Java kann ja ausgeführt werden, sonst würde java -version in die Hose gehen.
Aber java muß nicht auf der gleichen Partition liegen wie sein Programm.
Nein. Aber es muss ja nur java ausgeführt werden, nicht sein Programm. Gruß, Bernhard -- _________ http://www.bwalle.de _________________________________________________ "Less is more or less more" -- Y_Plentyn on #LinuxGER
participants (7)
-
Alexander Veit
-
andreas.ernst.beselich@t-online.de
-
Bernhard Walle
-
Czeschla@t-online.de
-
David Haller
-
Joerg Rossdeutscher
-
Thomas Bohnert