Re: Frage zu java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter

2021-06-23 Diskussionsfäden Erik Schanze

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

2021-06-23 Diskussionsfäden Christoph Müller

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

2021-06-23 Diskussionsfäden Erik Schanze

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

2021-06-23 Diskussionsfäden Erik Schanze

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

2021-06-23 Diskussionsfäden Christoph Müller

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

2021-06-23 Diskussionsfäden Hilmar Preuße

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

2021-06-22 Diskussionsfäden Erik Schanze

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

2021-06-22 Diskussionsfäden Christoph Müller

  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

2021-06-22 Diskussionsfäden Erik Schanze

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