Skip to content

Recaf on NixOs #739

@C0D3-M4513R

Description

@C0D3-M4513R

Describe the bug
Recaf 2.21.13, latest 3.0.0-SNAPSHOT and recaf-launcher-0.1.3.jar all fail to start Recaf

To Reproduce

Steps to reproduce the behavior:

  1. Be on Nixos
  2. Download any of the versions I talked about
  3. Open a new shell with java inside: nix-shell -p jdk17 openjfx17
  4. Run the recaf jars
  5. See error

Exception

log

Nov 13, 2023 1:41:25 AM com.sun.javafx.application.PlatformImpl startup
WARNING: Unsupported JavaFX configuration: classes were loaded from 'unnamed module @66a2429c'
Loading library prism_es2 from resource failed: java.lang.UnsatisfiedLinkError: /home/user/.openjfx/cache/22-ea+16/amd64/libprism_es2.so: libXxf86vm.so.1: cannot open shared object file: No such file or directory
java.lang.UnsatisfiedLinkError: /home/user/.openjfx/cache/22-ea+16/amd64/libprism_es2.so: libXxf86vm.so.1: 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(NativeLibraries.java:388)
        at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:232)
        at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:174)
        at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2389)
        at java.base/java.lang.Runtime.load0(Runtime.java:755)
        at java.base/java.lang.System.load(System.java:1953)
        at com.sun.glass.utils.NativeLibLoader.installLibraryFromResource(NativeLibLoader.java:220)
        at com.sun.glass.utils.NativeLibLoader.loadLibraryFromResource(NativeLibLoader.java:200)
        at com.sun.glass.utils.NativeLibLoader.loadLibraryInternal(NativeLibLoader.java:142)
        at com.sun.glass.utils.NativeLibLoader.loadLibrary(NativeLibLoader.java:58)
        at com.sun.prism.es2.ES2Pipeline.lambda$static$0(ES2Pipeline.java:63)
        at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
        at com.sun.prism.es2.ES2Pipeline.<clinit>(ES2Pipeline.java:52)
        at java.base/java.lang.Class.forName0(Native Method)
        at java.base/java.lang.Class.forName(Class.java:375)
        at com.sun.prism.GraphicsPipeline.createPipeline(GraphicsPipeline.java:218)
        at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:92)
        at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125)
        at java.base/java.lang.Thread.run(Thread.java:833)
Loading library glassgtk3 from resource failed: java.lang.UnsatisfiedLinkError: /home/user/.openjfx/cache/22-ea+16/amd64/libglassgtk3.so: libXtst.so.6: cannot open shared object file: No such file or directory
java.lang.UnsatisfiedLinkError: /home/user/.openjfx/cache/22-ea+16/amd64/libglassgtk3.so: libXtst.so.6: 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(NativeLibraries.java:388)
        at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:232)
        at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:174)
        at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2389)
        at java.base/java.lang.Runtime.load0(Runtime.java:755)
        at java.base/java.lang.System.load(System.java:1953)
        at com.sun.glass.utils.NativeLibLoader.installLibraryFromResource(NativeLibLoader.java:220)
        at com.sun.glass.utils.NativeLibLoader.loadLibraryFromResource(NativeLibLoader.java:200)
        at com.sun.glass.utils.NativeLibLoader.loadLibraryInternal(NativeLibLoader.java:142)
        at com.sun.glass.utils.NativeLibLoader.loadLibrary(NativeLibLoader.java:58)
        at com.sun.glass.ui.gtk.GtkApplication.lambda$new$5(GtkApplication.java:173)
        at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
        at com.sun.glass.ui.gtk.GtkApplication.<init>(GtkApplication.java:162)
        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 com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:651)
        at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:671)
        at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:196)
        at java.base/java.lang.Thread.run(Thread.java:833)
01:41:26.021 [Main/main] ERROR: Uncaught exception on thread 'main'
java.lang.RuntimeException: java.lang.UnsatisfiedLinkError: no glassgtk3 in java.library.path: 
        at com.sun.javafx.tk.quantum.QuantumToolkit.startup(QuantumToolkit.java:300)
        at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:292)
        at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:162)
        at com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:651)
        at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:671)
        at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:196)
        at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.UnsatisfiedLinkError: no glassgtk3 in java.library.path: 
        at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2429)
        at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:818)
        at java.base/java.lang.System.loadLibrary(System.java:1989)
        at com.sun.glass.utils.NativeLibLoader.loadLibraryInternal(NativeLibLoader.java:170)
        at com.sun.glass.utils.NativeLibLoader.loadLibrary(NativeLibLoader.java:58)
        at com.sun.glass.ui.gtk.GtkApplication.lambda$new$5(GtkApplication.java:173)
        at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
        at com.sun.glass.ui.gtk.GtkApplication.<init>(GtkApplication.java:162)
        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)
        ... 6 common frames omitted
Weld SE container recaf shut down by shutdown hook

The core issue here is probably most likely the changes that nix makes to library loading.
Feel free to see this issue as more of a tracking issue.
(I already tried packaging my software for nix, and it wasn't easy)
I made a package request to nix: NixOS/nixpkgs#267124

Screenshots

If applicable, add screenshots to help explain your problem.

Metadata

Metadata

Assignees

No one assigned

    Labels

    2.X4.XJavaFXBugs/Quirks related to JFXusageNot a bug, but a question/problem regarding usage

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions