RPTools / maptool

Virtual Tabletop for playing roleplaying games with remote players or face to face.
http://rptools.net
GNU Affero General Public License v3.0
764 stars 258 forks source link

[Bug]: java.lang.UnsatisfiedLinkError: no glassgtk3 #4839

Open igorfranb opened 2 weeks ago

igorfranb commented 2 weeks ago

Describe the Bug

I've just installed maptool and when I try to run it the message "java.lang.UnsatisfiedLinkError: no glassgtk3 in java.library.path: /usr/java/packages/lib:/usr/lib64:/lib:/usr/lib"

To Reproduce

Install Maptool and run it

Expected Behaviour

The program should've run

Screenshots

No response

MapTool Info

Version: 1.14.3. Installion method: rpm file

Desktop

OpenSuse Tumbleweed

Additional Context

I've tried updating all packages, reinstalling JDK, but nothing works.

kwvanderlinde commented 2 weeks ago

Looks specific to a KDE install of Tumbleweed. I reproduced it on a fresh install, here's the underlying error:

Loading library glassgtk3 from resource failed: java.lang.UnsatisfiedLinkError: /home/kenneth/.openjfx/cache/20+19/amd64/libglassgtk3.so: libgthread-2.0.so.0: cannot open shared object file: No such file or directory
java.lang.UnsatisfiedLinkError: /home/kenneth/.openjfx/cache/20+19/amd64/libglassgtk3.so: libgthread-2.0.so.0: cannot open shared object file: No such file or directory
        at java.base/jdk.internal.loader.NativeLibraries.load(Native Method)
        at java.base/jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open(Unknown Source)
        at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(Unknown Source)
        at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(Unknown Source)
        at java.base/java.lang.ClassLoader.loadLibrary(Unknown Source)
        at java.base/java.lang.Runtime.load0(Unknown Source)
        at java.base/java.lang.System.load(Unknown Source)
        at com.sun.glass.utils.NativeLibLoader.installLibraryFromResource(NativeLibLoader.java:217)
        at com.sun.glass.utils.NativeLibLoader.loadLibraryFromResource(NativeLibLoader.java:197)
        at com.sun.glass.utils.NativeLibLoader.loadLibraryInternal(NativeLibLoader.java:138)
        at com.sun.glass.utils.NativeLibLoader.loadLibrary(NativeLibLoader.java:54)
        at com.sun.glass.ui.gtk.GtkApplication.lambda$new$6(GtkApplication.java:221)
        at java.base/java.security.AccessController.doPrivileged(Unknown Source)
        at com.sun.glass.ui.gtk.GtkApplication.(GtkApplication.java:200)
        at com.sun.glass.ui.gtk.GtkPlatformFactory.createApplication(GtkPlatformFactory.java:40)
        at com.sun.glass.ui.Application.run(Application.java:146)
        at com.sun.javafx.tk.quantum.QuantumToolkit.startup(QuantumToolkit.java:290)
        at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:292)
        at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:162)
        at javafx.embed.swing.JFXPanel.initFx(JFXPanel.java:247)
        at javafx.embed.swing.JFXPanel.(JFXPanel.java:263)
        at net.rptools.maptool.client.swing.SplashScreen.(SplashScreen.java:37)
        at net.rptools.maptool.client.MapTool.main(MapTool.java:1749)
        at net.rptools.maptool.client.LaunchInstructions.main(LaunchInstructions.java:51)

So at least solution is simple:

sudo zypper install libgthread-2_0-0

Disclaimer: I'm not an OpenSuse person, no idea if that's the typical way to doing things.

What I don't know is whether there is anything we can do on our end to make this better, or whether this is just a limitation of JavaFX.