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
802 stars 263 forks source link

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

Open igorfranb opened 5 months ago

igorfranb commented 5 months 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 5 months 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.

Azhrei commented 4 months ago

Since the jpackage installer only creates DEB files and RPM files for Debian and Red Hat, respectively, using those files on other OSes is covered by our blanket caveat emptor policy. 😉

This has been commented on (in Discord) by folks using Arch Linux who need to either update their PATH or create symlinks in their /usr/bin directories because MT on Linux goes into /opt, and the simplistic approach taken by the converter that MT uses doesn't do this automatically.