Re: Frage zu java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
Hallo Christoph, Am 23.06.21 um 20:33 schrieb Christoph Müller: java -cp /usr/share/java/javax.activation.jar:/usr/share/java/jaxb-api.jar:/usr/share/java/jaxb-impl.jar:/usr/share/java/jaxb-core.jar:StatPOSTer-20160306.jar StatPOSTer Einfach alle jaxb jars und das app-jar als classpath angeben und dann den Namen der Main-Klasse (StatPOSTer, gefunden im Manifest des app jars) drangehängt. (Das aktuelle Verzeichnis muss dort sein, wo das app jar liegt. Oder das app jar muss auch mit absolutem Pfad referenziert werden) Vielen Dank, dass du dir solche Mühe gemacht hast. Es funktioniert wunderbar! Da wäre ich nie drauf gekommen. Vielen Dank nochmal, Erik
Re: Frage zu java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
Hallo Erik, On 2021-06-23 13:25, Erik Schanze wrote: Am 23.06.21 um 10:06 schrieb Christoph Müller: On 2021-06-23 07:36, Erik Schanze wrote: $ java -cp /usr/share/jaxb/lib -jar ~/Downloads/tp-link-td-w8970/StatPOSTer-20160306.jar hab mal versucht, das nachzustellen. mit debian 10.10, openjdk 11.0.11 und jaxb (installiert per aptitude - libjaxb-api-java und libjaxb-java). Kommt der Fehler beim Starten des Programmes (das funktioniert bei mir)? Im der GUI auf "Decrypt" klicken, irgend ein Text-Datei auswählen und Ja, damit kann ich es nachstellen ... schaun wir mal ... Die manpage zu java sagt nicht viel, aber java --help sagt 'ne Menge. Auch was zu -cp & Co. Erster Versuch: java -cp /usr/share/java/jaxb-api.jar -jar StatPOSTer-20160306.jar führt zu java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter Zweiter Versuch: java -classpath /usr/share/java/jaxb-api.jar -jar StatPOSTer-20160306.jar Selbes Ergebnis. Verständlich. Die sollten ja synonym sein. Mal ins jar schauen ... pisi@debianTesting:~/jaxb-java11-issue$ unzip -l /usr/share/java/jaxb-api.jar | grep DatatypeConverter 7176 2018-11-01 22:46 javax/xml/bind/DatatypeConverter.class [..] Ja, da ist die Klasse drin. Theorie ... wenn wir -jar nutzen, dann ignoriert er -cp. Kann das wer bestätigen? Jedenfalls komme ich mit folgender Variante weiter: java -cp /usr/share/java/javax.activation.jar:/usr/share/java/jaxb-api.jar:/usr/share/java/jaxb-impl.jar:/usr/share/java/jaxb-core.jar:StatPOSTer-20160306.jar StatPOSTer Einfach alle jaxb jars und das app-jar als classpath angeben und dann den Namen der Main-Klasse (StatPOSTer, gefunden im Manifest des app jars) drangehängt. (Das aktuelle Verzeichnis muss dort sein, wo das app jar liegt. Oder das app jar muss auch mit absolutem Pfad referenziert werden) Jetzt bekomme ich: 2021.06.23 20:26:45 config decrypt: java.io.IOException: javax.crypto.IllegalBlockSizeException: Input length not multiple of 8 bytes Aber das liegt sicher an meinem dummy Inputfile. Grüße, Christoph
Re: Frage zu java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
Hallo Hilmar, Am 23.06.21 um 08:18 schrieb Hilmar Preuße: Am 23.06.2021 um 07:36 teilte Erik Schanze mit: Die Klasse javax/xml/bind/DatatypeConverter steckt in der Datei /usr/share/jaxb/lib/jaxb-api.jar und ich versuchte Folgendes: $ java -cp /usr/share/jaxb/lib -jar ~/Downloads/tp-link-td-w8970/StatPOSTer-20160306.jar $ CLASSPATH=$CLASSPATH:/usr/share/jaxb/lib java -jar ~/Downloads/tp-link-td-w8970/StatPOSTer-20160306.jar Leider kein Erfolg, es tritt der gleiche Fehler auf, er verwendet das neue JAR offenbar nicht. IIRC folgt hinter dem Parameter -cp nicht der Pfad zum jar File, sondern der komplette Pfade und das File selber. So hat Christoph das auch geschrieben. Du meinst: $ java -cp /usr/share/java/jaxb-api.jar -jar ~/Downloads/tp-link-td-w8970/StatPOSTer-20160306.jar Das geht leider auch nicht. Warum sollte ein "class path" auch auf eine Datei zeigen? Bei "path" erwartet man Verzeichnis, oder? VG, Erik
Re: Frage zu java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
Hallo Christoph, Am 23.06.21 um 10:06 schrieb Christoph Müller: On 2021-06-23 07:36, Erik Schanze wrote: $ java -cp /usr/share/jaxb/lib -jar ~/Downloads/tp-link-td-w8970/StatPOSTer-20160306.jar hab mal versucht, das nachzustellen. mit debian 10.10, openjdk 11.0.11 und jaxb (installiert per aptitude - libjaxb-api-java und libjaxb-java). Kommt der Fehler beim Starten des Programmes (das funktioniert bei mir)? Im der GUI auf "Decrypt" klicken, irgend ein Text-Datei auswählen und dann unter anderem Namen speichern. Dann erscheinen die Fehlermeldungen in der Konsole und die neue Datei wird nicht angelegt. VG, Erik
Re: Frage zu java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
Hallo Erik, On 2021-06-23 07:36, Erik Schanze wrote: > Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: > javax/xml/bind/DatatypeConverter Da sehe ich spontan folgende Ansätze: 1) den classpath um die fehlenden libs erweitern. 1a) Entweder mit de Schalter -cp, ungefähr so "java -cp ... -jar jarfile.jar" 2a) Oder mit der CLASSPATH Umgebungsvariable Die Klasse javax/xml/bind/DatatypeConverter steckt in der Datei /usr/share/jaxb/lib/jaxb-api.jar und ich versuchte Folgendes: $ java -cp /usr/share/jaxb/lib -jar ~/Downloads/tp-link-td-w8970/StatPOSTer-20160306.jar hab mal versucht, das nachzustellen. mit debian 10.10, openjdk 11.0.11 und jaxb (installiert per aptitude - libjaxb-api-java und libjaxb-java). Kommt der Fehler beim Starten des Programmes (das funktioniert bei mir)? Oder erst wenn du im Programm irgendetwas machst (was?) ? Grüße, Christoph
Re: Frage zu java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
Am 23.06.2021 um 07:36 teilte Erik Schanze mit: Moin, Die Klasse javax/xml/bind/DatatypeConverter steckt in der Datei /usr/share/jaxb/lib/jaxb-api.jar und ich versuchte Folgendes: $ java -cp /usr/share/jaxb/lib -jar ~/Downloads/tp-link-td-w8970/StatPOSTer-20160306.jar $ CLASSPATH=$CLASSPATH:/usr/share/jaxb/lib java -jar ~/Downloads/tp-link-td-w8970/StatPOSTer-20160306.jar Leider kein Erfolg, es tritt der gleiche Fehler auf, er verwendet das neue JAR offenbar nicht. IIRC folgt hinter dem Parameter -cp nicht der Pfad zum jar File, sondern der komplette Pfade und das File selber. So hat Christoph das auch geschrieben. H. -- sigfault OpenPGP_signature Description: OpenPGP digital signature
Re: Frage zu java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
Hallo Christoph, vielen Dank für die schnelle Antwort. Am 22.06.21 um 22:46 schrieb Christoph Müller: 22.06.2021 22:29:11 Erik Schanze : > Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: > javax/xml/bind/DatatypeConverter Da sehe ich spontan folgende Ansätze: 1) den classpath um die fehlenden libs erweitern. 1a) Entweder mit de Schalter -cp, ungefähr so "java -cp ... -jar jarfile.jar" 2a) Oder mit der CLASSPATH Umgebungsvariable Die Klasse javax/xml/bind/DatatypeConverter steckt in der Datei /usr/share/jaxb/lib/jaxb-api.jar und ich versuchte Folgendes: $ java -cp /usr/share/jaxb/lib -jar ~/Downloads/tp-link-td-w8970/StatPOSTer-20160306.jar $ CLASSPATH=$CLASSPATH:/usr/share/jaxb/lib java -jar ~/Downloads/tp-link-td-w8970/StatPOSTer-20160306.jar Leider kein Erfolg, es tritt der gleiche Fehler auf, er verwendet das neue JAR offenbar nicht. 2) jars sind auch nur ZIP-Dateien. Darin gibt es im Ordner META-INF eine Manifest Datei. Dort kann man auch ein Class-path(?) Attribut anlegen und dadurch zusätzliche jars referenzieren. Da weiß ich leider auch nicht wie. Danke, Erik
Re: Frage zu java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
Hallo Erik, 22.06.2021 22:29:11 Erik Schanze : > > Wenn ich die erwähnte JAR-Datei mit "openjdk 11.0.11" (Debian 10) laufen > lasse, gibt es beim "Decrypt" einen Fehler, weil mit Java 11 die > Java-EE-Module ausgelagert worden (https://openjdk.java.net/jeps/320): > > Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: > javax/xml/bind/DatatypeConverter > > > Die Pakete libjaxb-api-java und libjaxb-java, in denen die Module jetzt > scheinbar stecken, sind installiert. Aber wie bekomme ich die in Aktion? > > Gibt es eine Möglichkeit, die JAR-Datei (mit geschickten > Kommandozeilen-Optionen) und den Modulen zum Laufen zu bringen? > Da sehe ich spontan folgende Ansätze: 1) den classpath um die fehlenden libs erweitern. 1a) Entweder mit de Schalter -cp, ungefähr so "java -cp ... -jar jarfile.jar" 2a) Oder mit der CLASSPATH Umgebungsvariable 2) jars sind auch nur ZIP-Dateien. Darin gibt es im Ordner META-INF eine Manifest Datei. Dort kann man auch ein Class-path(?) Attribut anlegen und dadurch zusätzliche jars referenzieren. 3) das Ganze mit einem Java (1.)8 laufen lassen. Grüße, Christoph
Frage zu java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
Liebe Java-Auskenner, ich möchte einem Router OpenWRT verpassen und erstmal den Weg ohne seriellen Zugriff versuchen: https://openwrt.org/toh/tp-link/td-w8970_v1#statpost Wenn ich die erwähnte JAR-Datei mit "openjdk 11.0.11" (Debian 10) laufen lasse, gibt es beim "Decrypt" einen Fehler, weil mit Java 11 die Java-EE-Module ausgelagert worden (https://openjdk.java.net/jeps/320): Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter Die Pakete libjaxb-api-java und libjaxb-java, in denen die Module jetzt scheinbar stecken, sind installiert. Aber wie bekomme ich die in Aktion? Gibt es eine Möglichkeit, die JAR-Datei (mit geschickten Kommandozeilen-Optionen) und den Modulen zum Laufen zu bringen? Im Internet habe ich nur Hinweise auf "Dependency der pom.xml hinzufügen" gefunden, das hilft mir nicht, ich kann nicht neu bauen. Ich habe leider von Java gar keine Ahnung (zuletzt mit Java 2 gearbeitet :-) ), daher die (vielleicht dumme) Frage. Über hilfreiche Antworten würde ich mich sehr freuen. VG, Erik