![]() |
| | Themen-Optionen |
| | Nach oben #1 |
| Neuer Benutzer Registriert seit: 29.08.2005
Beiträge: 20
|
Hi! Hab mittels eclipse eine .jar Datei erstellt, um ein etwas Umfangreicheres Projekt aus der Konsole heraus starten zu können. Allerdings kommt folgende Meldung: Code: Exception in thread "main" java.lang.NoClassDefFoundError: org/jdom/JDOMException Die Fehlermeldung sieht schon so nach Classpath aus, also hab ich mal Code: java -cp C:\JDOM\jdom.jar -jar client.jar Dann hab ich die CLASSPATH variable unter der Systemsteuerung geändert und auf den entsprechenden Pfad gesetz. Ergebnis: Gleiche Fehlermeldung. Nächste Idee: jdom.jar in das gleiche verzeichnis kopieren. Gemacht. Classpath um den "." (= aktuelles Verzeichnis) ergänzt. Ergebnis: Gleiche Fehlermeldung! Also nochmal Code: java -cp . -jar client.jar Hab dann irgendwo im Netz den Hinweis gefunden, ich solle sicherstellen das die jdom.jar im Buildpath von eclipse ist. Hab ich mal nachgesehen (Project->Properties->Build Path) War nicht, drinn, jetzt ist sie es. Ergebnis: Gleiche Fehlermeldung! Ein Aufruf von Code: jar -tf client.jar Das Projekt benutzt auch noch Orbacus, mit den Zahlreichen jar`s die dort verwendet werden, gibt es aber keine Probleme... Hat jemand noch ne Idee, woran das liegen kann? Und vorallem wie ich das behebe! (Ideal wäre ne möglichkeit das ganze JDOM mit in die .jar zu packen, um alle abhängigkeiten von meinen Variablen und Pfaden zu vermeiden.) Grüße Arvodan |
| | |
| | Nach oben #2 |
| Benutzer Registriert seit: 15.11.2005
Beiträge: 75
|
Probier doch mal Code: java -verbose -cp c:\JDOM\jdom.jar -jar client.jar Code: -verbose:class Damit sieht man, welche Klassen woher geladen werden. Machmal hilft das, wenn man solchen Classpath-Problemen auf der Spur ist. |
| | |
| | Nach oben #4 |
| Neuer Benutzer Registriert seit: 29.08.2005
Beiträge: 20
|
edit:/ In diesem Beitrag beschriebenes Problem war nur ein vergessenes Häckchen beim jar-Export Schuld. Wer`s schon gelesen hat, einfach vergessen! Habe aber immernoch das Problem mit dem JDOM. Die Ausgabe mit -verbose hat mir nicht weitergeholfen, hab den Fehler noch nicht gefunden... Grüße Arvodan |
| | |
| | Nach oben #5 | |
| Benutzer Registriert seit: 15.11.2005
Beiträge: 75
| Zitat:
Die Fehlermeldung besagt, dass CorbaCanServer.CClientOperations geladen werden soll, also die Klasse CClientOperations aus dem Package CorbaCanServer (normalerweise gibt es die Konvention, dass Packages immer klein geschrieben werden, aber grundsätzlich müsste es auch so funktionieren). Der Classpath muss jetzt entweder ein Jar- oder Zip-File enthalten, in dem die Klasse enthalten ist, oder er muss ein Verzeichnis beeinhalten, in dem die einzelnen Class-Files liegen. Im zweiten Fall ist es entscheidend, dass man das Verzeichnis angibt, in dem es ein Unterverzeichnis mit dem ersten Teil des Package-Namens gibt. Schwierig zu erklären, daher ein Beispiel: Test.java: Code: package com.xyz.test;
public class Test {
}
Code: javac -d \home\work\java\lib Test.java Der Classpath muss nun auf d:\home\work\java\lib und nicht etwa auf d:\home\work\java\lib\com\xyz\test stehen, da die Unterverzeichnisse, die dem Package-Namen entsprechen, später vom ClassLoader ergänzt werden. Existiert bei Dir im Filesystem die Datei D:\projects\hdm\libExt\CorbaCanServer\CClientOpera tions.class? Wenn das so ist, muss wohl das Verzeichnis D:\projects\hdm\libExt in den Classpath. | |
| | |
| | Nach oben #6 |
| Neuer Benutzer Registriert seit: 29.08.2005
Beiträge: 20
|
jo, das Verzeichnis gibt es. Hab aber einfach beim erstellen der jar-Datei vergessen das Package CorbaCanServer mit anzuwählen... edit:/ also ich habe das CorbaCanServer zeugs garnicht im Classpath, es liegt alles direkt in der .jar Datei.Nur mit dem JDOM klappt das nicht... Dennoch kommt die Fehlermeldung mit dem JDOM...obwohl er im Classpath liegt... |
| | |
| | Nach oben #7 |
| Benutzer Registriert seit: 15.11.2005
Beiträge: 75
|
Jar-Files müssen immer explizit im Classpath auftauchen; es reicht nicht, sie in ein Verzeichnis zu spielen, das im Classpath enthalten ist. Bsp.: Das aktuelle Verzeichnis enthält jdom.jar Code: java -cp . -jar client.jar Richtig ist Code: java -cp .\jdom.jar -jar client.jar |
| | |
| | Nach oben #8 |
| Neuer Benutzer Registriert seit: 29.08.2005
Beiträge: 20
| Code: C:\>set Class CLASSPATH=D:\projects\libExt\jdom.jar (wusste ich nicht, das .jar`s explizit auftauchen müssen, hab es aber wohl "intuitiv" (oder aus Zufall) gemacht). Sonst `ne Idee? Gibt es noch was, außer dem Classpaht, das in dem System eingestellt werden müsste? Nein, oder? Echt ärgerlich das ganze... Grüße Arvodan edit:/ Hab mir das ganze mal nochmal mit jar -tf client.jar angesehen.. die jdom.jar ist jetzt in dem jar file enthalten. Und in der jdom.jar wiederum ist die gesuchte Klasse auch enthalten...also wieso findet der das dann nicht? Kann das dann überhaupt noch was mit dem Classpath zu tun haben? Oder was mit dem Manifest? Oder womit? |
| | |
| | Nach oben #10 |
| Projektleiter Registriert seit: 30.11.2005 Ort: Bottrop
Beiträge: 1.110
|
Eine Jar-Datei sollte man nicht unbedingt in eine andere Jar-Datei packen. Speziell dann nicht, wenn die äußere auf die innere zugreifen will.
__________________ Patrick Gotthardts Weblog. |
| | |
| | Nach oben #11 |
| Neuer Benutzer Registriert seit: 29.08.2005
Beiträge: 20
|
Nein, benutze keinen Classloader. hab j2sdk1.4.2_09 komplett Standard. Eclipse 3.1. Auch standard... Dumme Sache das....das muss doch irgendwie außerhalb vom Eclipse zum laufen zu bekommen sein.... kann mir die .classpath Datei von eclipse da weiterhelfen? Oder schließt ihr den Classpath als Fehlerursache auch aus? Grüße Arvodan |
| | |
| | Nach oben #12 |
| Sesselkleber Registriert seit: 17.01.2005
Beiträge: 575
|
Also, ich würde davon abraten eine .jar-Datei in eine andere .jar-Datei zu verpacken und diese dann als Bibliothek verwenden zu wollen. Das führt nur zu Problemen, wobei es aber die Möglichkeit gibt diese in der Manifest-Datei mit anzugeben. Wie gesagt, gab bei mir nur Probleme. Du willst die .jar ja sicherlich auch mal ausliefern, oder? Und dann den Usern klar zu machen, was sie eingeben müssen damit es startet, oder tatsächlich für alle Betriebssysteme ein Script zu schreiben.... klingt sehr aufwendig. Mach einfach folgendes, so gehe ich immer vor:
Auf diese Weise kannst du dich darauf verlassen, dass alle benötigen Bibliotheken direkt für das Programm verfügbar sind, und du bist alle Probleme los. Für mich gibt es keinen ersichtlichen Grund die Bibliotheken unbedingt in eine eigene .jar zu packen nachdem dein Programm Gold gegangen ist. |
| | |
| | Nach oben #13 |
| Neuer Benutzer Registriert seit: 29.08.2005
Beiträge: 20
|
Ah, Sparrow, das war die Lösung! Alle Datein in ein eigenes Archiv, von Hand das jar file gebaut und dann ging es... Man sollte sich halt nicht immer auf IDE`s verlassen.... Vielen Dank für die Hilfe, an das ganze Forum! Grüße Arvodan |
| | |
| | Nach oben #14 |
| Neuer Benutzer Registriert seit: 29.08.2005
Beiträge: 20
|
Nachtrag: Nachdem ich stundenlang an einem ähnlichen Problem rumgebastelt hab, habe ich rausgefunden das es auch geht, wenn ich besagte .jar Datei in JAVA_HOME/jre/lib/ext ablege. (bzw. bei einer anderen in JAVA_HOME/jre/lib). Jetzt stellt sich mir die frage, warum das so dann geht, aber mit setzen des Klassenpfades nicht? Das einzige was ich mir vorstellen könnte, wäre das die JVM die Klasse braucht, bevor der eigentliche Classloader für die Anwendung gestartet wird, nur warum? Hat da jemand erfahrung mit? Vielleicht wird das in Zukunft mal wichtig... Grüße Arvodan |
| | |
| | Nach oben #15 |
| Sesselkleber Registriert seit: 17.01.2005
Beiträge: 575
|
Repdoduzier das Problem mal für mich, sag mir ganz genau was nicht geht. Schränk das Problem nach Möglichkeit ein, bau ein Programm, das nur eine einzige Bibliothek braucht und sag mir dann genau was geht und was nicht geht. Dann versuchen wir das mal zu lösen. Gruß Sparrow |
| | |
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Thread mehrfach starten | jack77 | Desktop-Applikationen und Grafik | 18 | 07.03.2007 17:44 |
| Anzeige, wann ein Thread erstellt wurde hinzugefügt | Ben | Archiv | 5 | 25.01.2006 22:55 |
| Problem bei der Einbindung eines Applets in HTML | exoskelett | Desktop-Applikationen und Grafik | 13 | 24.01.2006 18:45 |
| Exception aber wo? | Sengi | Allgemeine Java-Programmierung | 1 | 04.01.2006 19:32 |
| Thread in Applet wird nicht gestartet? | Ben | Desktop-Applikationen und Grafik | 2 | 26.10.2005 20:33 |