java.lang.noclassdeffounderror auf ARMv7 System

 
docromano
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 15
Dabei seit: 12 / 2018
Betreff:

java.lang.noclassdeffounderror auf ARMv7 System

 · 
Gepostet: 11.12.2018 - 15:30 Uhr  ·  #1
Ich habe Jameica (und Hibiscus) gemäß der Anleitung https://www.willuhn.de/wiki/do…_arm_linux

auf meinem Odroid System mit Debian Stretch installiert. Java ist aktuell v11, vorher mit v8 war das Problem das gleiche.

Der erste Start lief soweit durch, dass ein Datenverzeichnis abgefragt wurde, was ich dann zugewiesen habe. Letztlich bricht der Start aber mit folgender Meldung ab:

Code
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/swt/graphics/ImageDataProvider
        at de.willuhn.jameica.gui.SplashScreen.<init>(SplashScreen.java:124)
        at de.willuhn.jameica.system.ApplicationCallbackSWT.getStartupMonitor(ApplicationCallbackSWT.java:174)
        at de.willuhn.jameica.system.Application.init(Application.java:97)
        at de.willuhn.jameica.system.Application.newInstance(Application.java:87)
        at de.willuhn.jameica.Main.main(Main.java:75)
Caused by: java.lang.ClassNotFoundException: org.eclipse.swt.graphics.ImageDataProvider
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)


Was kann ich tun ?

Vielen Dank schonmal für hilfreiche Tipps ;)
hibiscus
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Leipzig
Homepage: willuhn.de/
Beiträge: 11386
Dabei seit: 03 / 2005
Betreff:

Re: java.lang.noclassdeffounderror auf ARMv7 System

 · 
Gepostet: 12.12.2018 - 09:08 Uhr  ·  #2
Die Anleitung im Wiki zu Linux ARM ist ziemlich alt. Das Problem ist, dass die dort verlinkte SWT-Version fuer Debian ARM zu alt ist. Du koenntest es stattdessen mit der SWT4-Version versuchen: https://packages.debian.org/jessie/libswt-gtk-4-java
Wenn das auch nicht funktioniert, habe ich auch keine Loesung. Da Problem hierbei ist schlicht, dass die ARM-Plattform von Eclipse SWT offiziell nicht unterstuetzt wird.
docromano
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 15
Dabei seit: 12 / 2018
Betreff:

Re: java.lang.noclassdeffounderror auf ARMv7 System

 · 
Gepostet: 21.12.2018 - 15:50 Uhr  ·  #3
Danke für den schnellen Tip ! Das war zumindest ein Teil der Lösung. Dafür gibts jetzt natürlich ein neues Problem und ich fürchte die grundsätzliche ARM Unverträglichkeit, zumindest für Linux-Laien:

Code

Exception in thread "main" java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons: 
        no swt-pi-gtk-4623 in java.library.path: [/usr/java/packages/lib, /usr/lib/arm-linux-gnueabihf/jni, /lib/arm-linux-gnueabihf, /usr/lib/arm-linux-gnueabihf, /usr/lib/jni, /lib, /usr/lib]
        no swt-pi-gtk in java.library.path: [/usr/java/packages/lib, /usr/lib/arm-linux-gnueabihf/jni, /lib/arm-linux-gnueabihf, /usr/lib/arm-linux-gnueabihf, /usr/lib/jni, /lib, /usr/lib]
        Can't load library: /usr/lib/jni/libswt-pi-gtk-4623.so
        Can't load library: /usr/lib/jni/libswt-pi-gtk.so
        Can't load library: /root/.swt/lib/linux/arm/libswt-pi-gtk-4623.so
        Can't load library: /root/.swt/lib/linux/arm/libswt-pi-gtk.so

        at org.eclipse.swt.internal.Library.loadLibrary(Library.java:331)
        at org.eclipse.swt.internal.Library.loadLibrary(Library.java:236)
        at org.eclipse.swt.internal.gtk.OS.<clinit>(OS.java:28)
        at org.eclipse.swt.internal.Converter.wcsToMbcs(Converter.java:63)
        at org.eclipse.swt.internal.Converter.wcsToMbcs(Converter.java:54)
        at org.eclipse.swt.widgets.Display.<clinit>(Display.java:139)
        at de.willuhn.jameica.gui.GUI.getDisplay(GUI.java:959)
        at de.willuhn.jameica.gui.SplashScreen.<init>(SplashScreen.java:112)
        at de.willuhn.jameica.system.ApplicationCallbackSWT.getStartupMonitor(ApplicationCallbackSWT.java:174)
        at de.willuhn.jameica.system.Application.init(Application.java:97)
        at de.willuhn.jameica.system.Application.newInstance(Application.java:87)
        at de.willuhn.jameica.Main.main(Main.java:75)
hibiscus
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Leipzig
Homepage: willuhn.de/
Beiträge: 11386
Dabei seit: 03 / 2005
Betreff:

Re: java.lang.noclassdeffounderror auf ARMv7 System

 · 
Gepostet: 21.12.2018 - 16:16 Uhr  ·  #4
docromano
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 15
Dabei seit: 12 / 2018
Betreff:

Re: java.lang.noclassdeffounderror auf ARMv7 System

 · 
Gepostet: 22.12.2018 - 19:26 Uhr  ·  #5
Code
libswt-gtk-4-jni is already the newest version (4.6.0-2).


Leider schon drauf gewesen. Drauf ist die 4626 (s.u.), ich brauche aber die 4623. Einfach umbenennen wäre vermutlich zu stümperhaft ?

Code

# locate libswt-gtk
/root/.swt/lib/linux/arm/libswt-gtk-4626.so
/usr/lib/jni/libswt-gtk-3836.so
/usr/lib/jni/libswt-gtk-4623.so
/usr/share/doc/libswt-gtk-3-java
/usr/share/doc/libswt-gtk-3-jni
/usr/share/doc/libswt-gtk-4-java
/usr/share/doc/libswt-gtk-4-jni
/usr/share/doc/libswt-gtk-3-java/README.Debian
/usr/share/doc/libswt-gtk-3-java/README.gz
/usr/share/doc/libswt-gtk-3-java/changelog.Debian.gz
/usr/share/doc/libswt-gtk-3-java/copyright
/usr/share/doc/libswt-gtk-3-jni/changelog.Debian.gz
/usr/share/doc/libswt-gtk-3-jni/copyright
/usr/share/doc/libswt-gtk-4-java/README.Debian
/usr/share/doc/libswt-gtk-4-java/README.gz
/usr/share/doc/libswt-gtk-4-java/changelog.Debian.gz
/usr/share/doc/libswt-gtk-4-java/copyright
/usr/share/doc/libswt-gtk-4-jni/changelog.Debian.gz
/usr/share/doc/libswt-gtk-4-jni/copyright
/usr/share/java-config/libswt-gtk-3-java
/usr/share/lintian/overrides/libswt-gtk-3-java
/usr/share/lintian/overrides/libswt-gtk-3-jni
/usr/share/lintian/overrides/libswt-gtk-4-java
/var/lib/dpkg/info/libswt-gtk-3-java.list
/var/lib/dpkg/info/libswt-gtk-3-java.md5sums
/var/lib/dpkg/info/libswt-gtk-3-java.preinst
/var/lib/dpkg/info/libswt-gtk-3-jni.list
/var/lib/dpkg/info/libswt-gtk-3-jni.md5sums
/var/lib/dpkg/info/libswt-gtk-4-java.list
/var/lib/dpkg/info/libswt-gtk-4-java.md5sums
/var/lib/dpkg/info/libswt-gtk-4-java.preinst
/var/lib/dpkg/info/libswt-gtk-4-jni.list
/var/lib/dpkg/info/libswt-gtk-4-jni.md5sums
hibiscus
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Leipzig
Homepage: willuhn.de/
Beiträge: 11386
Dabei seit: 03 / 2005
Betreff:

Re: java.lang.noclassdeffounderror auf ARMv7 System

 · 
Gepostet: 22.12.2018 - 22:59 Uhr  ·  #6
Also falls die du die nativen JNI-Libs nicht in einer passenden 4er Version zu den SWT-Libs findest, waere das Umbenennen der .so Datei - auch wenn es haesslich ist - durchaus ein Weg, der funktionieren koennte. Ich glaube nicht, dass es bei diesem kleinen Versionsunterschied relevante Aenderungen in den APIs gab.
docromano
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 15
Dabei seit: 12 / 2018
Betreff:

Re: java.lang.noclassdeffounderror auf ARMv7 System

 · 
Gepostet: 23.12.2018 - 15:55 Uhr  ·  #7
Danke für die vielen Tips, es läuft !

Lösung war folgende:

/usr/bin/jni/libswt-pi3-gtk-4623.so

muss umbenannt werden (die 3 weglassen).

Außerdem braucht man noch das Paket
libswt-cairo-gtk-4-jni

So läuft die Software auf meinem Odroid mit Debian Stretch ganz hervorragend, während sie sich die Datenbank mit zwei Win10 Rechnern teilt. Top ! Geschwindigkeit ist absolut akzeptabel. Müsste auch auf einem Raspi funktionieren.
hibiscus
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Leipzig
Homepage: willuhn.de/
Beiträge: 11386
Dabei seit: 03 / 2005
Betreff:

Re: java.lang.noclassdeffounderror auf ARMv7 System

 · 
Gepostet: 27.12.2018 - 10:45 Uhr  ·  #8
Prima. Danke fuer die Rueckmeldung.
Gewählte Zitate für Mehrfachzitierung:   0