LWJGL / lwjgl3

LWJGL is a Java library that enables cross-platform access to popular native APIs useful in the development of graphics (OpenGL, Vulkan, bgfx), audio (OpenAL, Opus), parallel computing (OpenCL, CUDA) and XR (OpenVR, LibOVR, OpenXR) applications.
https://www.lwjgl.org
BSD 3-Clause "New" or "Revised" License
4.67k stars 631 forks source link

Assimp UnsatisfiedLinkError #781

Closed wizzardo closed 1 year ago

wizzardo commented 1 year ago

Version

3.3.2 (nightly)

Platform

macOS arm64

JDK

Temurin open jdk 11.0.14

Module

Assimp

Bug description

Exception in thread "Thread-0" java.lang.UnsatisfiedLinkError: Failed to dynamically load library: /var/folders/8g/vxjf7j550jd4xkth7t28mcj00000gn/T/lwjglwizzardo/3.3.2-build-2/macos/arm64/org/lwjgl/assimp/libassimp.dylib(error = null)
    at org.lwjgl.system.macosx.MacOSXLibraryDL.loadLibrary(MacOSXLibraryDL.java:33)
    at org.lwjgl.system.macosx.MacOSXLibraryDL.<init>(MacOSXLibraryDL.java:20)
    at org.lwjgl.system.macosx.MacOSXLibrary.create(MacOSXLibrary.java:27)
    at org.lwjgl.system.APIUtil.apiCreateLibrary(APIUtil.java:113)
    at org.lwjgl.system.Library.loadNative(Library.java:367)
    at org.lwjgl.system.Library.loadNativeFromLibraryPath(Library.java:356)
    at org.lwjgl.system.Library.loadNative(Library.java:270)
    at org.lwjgl.system.Library.loadNative(Library.java:228)
    at org.lwjgl.assimp.Assimp.<clinit>(Assimp.java:168)

if I try to load the lib manually:

Exception in thread "Thread-0" java.lang.UnsatisfiedLinkError: /private/var/folders/8g/vxjf7j550jd4xkth7t28mcj00000gn/T/libassimp.dylib: dlopen(/private/var/folders/8g/vxjf7j550jd4xkth7t28mcj00000gn/T/libassimp.dylib, 0x0001): Library not loaded: @rpath/libdraco.1.dylib
  Referenced from: /private/var/folders/8g/vxjf7j550jd4xkth7t28mcj00000gn/T/libassimp.dylib
  Reason: tried: '/Users/runner/work/assimp/assimp/build/bin/libdraco.1.dylib' (no such file), '/Users/runner/work/assimp/assimp/build/bin/libdraco.1.dylib' (no such file), '/Users/wizzardo/Library/Java/liberica-11.0.14/lib/server/./libdraco.1.dylib' (no such file), '/Users/wizzardo/Library/Java/liberica-11.0.14/lib/server/../libdraco.1.dylib' (no such file), '/Users/wizzardo/Library/Java/liberica-11.0.14/bin/../lib/jli/libdraco.1.dylib' (no such file), '/usr/lib/libdraco.1.dylib' (no such file)

previous snapshot version (3.3.2-1) works fine

Stacktrace or crash log output

No response

Spasi commented 1 year ago

Hey @wizzardo,

The problem was the support for KHR_draco_mesh_compression added with #773. I assumed that the Draco library would be statically linked into the Assimp shared library, but turns out it's a separate binary. The next 3.3.2 snapshot will bundle both shared libraries in the Assimp native jar.

Thanks!

Spasi commented 1 year ago

LWJGL 3.3.2 snapshot 3 is now available and Assimp is working again.