-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Closed
Labels
defectSomething that is supposed to work, but doesn't. Less severe than a "bug"Something that is supposed to work, but doesn't. Less severe than a "bug"
Milestone
Description
- All the native libraries registered by default for lwjgl 2 and 3 in NativeLibraryLoader have the wrong path! (it still works for lwjgl2 and JInput because of this fallback because lwjgl2 and JInput natives are located in the root of the jar)
jmonkeyengine/jme3-desktop/src/main/java/com/jme3/system/NativeLibraryLoader.java
Lines 123 to 200 in 375015f
| // LWJGL | |
| registerNativeLibrary("lwjgl", Platform.Windows32, "native/windows/lwjgl.dll"); | |
| registerNativeLibrary("lwjgl", Platform.Windows64, "native/windows/lwjgl64.dll"); | |
| registerNativeLibrary("lwjgl", Platform.Linux32, "native/linux/liblwjgl.so"); | |
| registerNativeLibrary("lwjgl", Platform.Linux64, "native/linux/liblwjgl64.so"); | |
| registerNativeLibrary("lwjgl", Platform.MacOSX32, "native/macosx/liblwjgl.dylib"); | |
| registerNativeLibrary("lwjgl", Platform.MacOSX64, "native/macosx/liblwjgl.dylib"); | |
| // OpenAL | |
| // For OSX: Need to add lib prefix when extracting | |
| registerNativeLibrary("openal", Platform.Windows32, "native/windows/OpenAL32.dll"); | |
| registerNativeLibrary("openal", Platform.Windows64, "native/windows/OpenAL64.dll"); | |
| registerNativeLibrary("openal", Platform.Linux32, "native/linux/libopenal.so"); | |
| registerNativeLibrary("openal", Platform.Linux64, "native/linux/libopenal64.so"); | |
| registerNativeLibrary("openal", Platform.MacOSX32, "native/macosx/openal.dylib", "libopenal.dylib"); | |
| registerNativeLibrary("openal", Platform.MacOSX64, "native/macosx/openal.dylib", "libopenal.dylib"); | |
| // LWJGL 3.x | |
| registerNativeLibrary("lwjgl3", Platform.Windows32, "native/windows/lwjgl32.dll"); | |
| registerNativeLibrary("lwjgl3", Platform.Windows64, "native/windows/lwjgl.dll"); | |
| registerNativeLibrary("lwjgl3", Platform.Linux32, "native/linux/liblwjgl32.so"); | |
| registerNativeLibrary("lwjgl3", Platform.Linux64, "native/linux/liblwjgl.so"); | |
| registerNativeLibrary("lwjgl3", Platform.MacOSX32, "native/macosx/liblwjgl.dylib"); | |
| registerNativeLibrary("lwjgl3", Platform.MacOSX64, "native/macosx/liblwjgl.dylib"); | |
| // GLFW for LWJGL 3.x | |
| registerNativeLibrary("glfw-lwjgl3", Platform.Windows32, "native/windows/glfw32.dll"); | |
| registerNativeLibrary("glfw-lwjgl3", Platform.Windows64, "native/windows/glfw.dll"); | |
| registerNativeLibrary("glfw-lwjgl3", Platform.Linux32, "native/linux/libglfw32.so"); | |
| registerNativeLibrary("glfw-lwjgl3", Platform.Linux64, "native/linux/libglfw.so"); | |
| registerNativeLibrary("glfw-lwjgl3", Platform.MacOSX32, "native/macosx/libglfw.dylib"); | |
| registerNativeLibrary("glfw-lwjgl3", Platform.MacOSX64, "native/macosx/libglfw.dylib"); | |
| // jemalloc for LWJGL 3.x | |
| registerNativeLibrary("jemalloc-lwjgl3", Platform.Windows32, "native/windows/jemalloc32.dll"); | |
| registerNativeLibrary("jemalloc-lwjgl3", Platform.Windows64, "native/windows/jemalloc.dll"); | |
| registerNativeLibrary("jemalloc-lwjgl3", Platform.Linux32, "native/linux/libjemalloc32.so"); | |
| registerNativeLibrary("jemalloc-lwjgl3", Platform.Linux64, "native/linux/libjemalloc.so"); | |
| registerNativeLibrary("jemalloc-lwjgl3", Platform.MacOSX32, "native/macosx/libjemalloc.dylib"); | |
| registerNativeLibrary("jemalloc-lwjgl3", Platform.MacOSX64, "native/macosx/libjemalloc.dylib"); | |
| // OpenAL for LWJGL 3.x | |
| // For OSX: Need to add lib prefix when extracting | |
| registerNativeLibrary("openal-lwjgl3", Platform.Windows32, "native/windows/OpenAL32.dll"); | |
| registerNativeLibrary("openal-lwjgl3", Platform.Windows64, "native/windows/OpenAL.dll"); | |
| registerNativeLibrary("openal-lwjgl3", Platform.Linux32, "native/linux/libopenal32.so"); | |
| registerNativeLibrary("openal-lwjgl3", Platform.Linux64, "native/linux/libopenal.so"); | |
| registerNativeLibrary("openal-lwjgl3", Platform.MacOSX32, "native/macosx/openal.dylib", "libopenal.dylib"); | |
| registerNativeLibrary("openal-lwjgl3", Platform.MacOSX64, "native/macosx/openal.dylib", "libopenal.dylib"); | |
| // BulletJme | |
| registerNativeLibrary("bulletjme", Platform.Windows32, "native/windows/x86/bulletjme.dll"); | |
| registerNativeLibrary("bulletjme", Platform.Windows64, "native/windows/x86_64/bulletjme.dll"); | |
| registerNativeLibrary("bulletjme", Platform.Windows_ARM64, "native/windows/arm64/bulletjme.dll"); | |
| registerNativeLibrary("bulletjme", Platform.Linux32, "native/linux/x86/libbulletjme.so"); | |
| registerNativeLibrary("bulletjme", Platform.Linux64, "native/linux/x86_64/libbulletjme.so"); | |
| registerNativeLibrary("bulletjme", Platform.Linux_ARM32, "native/linux/arm32/libbulletjme.so"); | |
| registerNativeLibrary("bulletjme", Platform.Linux_ARM64, "native/linux/arm64/libbulletjme.so"); | |
| registerNativeLibrary("bulletjme", Platform.MacOSX32, "native/osx/x86/libbulletjme.dylib"); | |
| registerNativeLibrary("bulletjme", Platform.MacOSX64, "native/osx/x86_64/libbulletjme.dylib"); | |
| registerNativeLibrary("bulletjme", Platform.MacOSX_ARM64, "native/osx/arm64/libbulletjme.dylib"); | |
| // JInput | |
| // For OSX: Need to rename extension jnilib -> dylib when extracting | |
| registerNativeLibrary("jinput", Platform.Windows32, "native/windows/jinput-raw.dll"); | |
| registerNativeLibrary("jinput", Platform.Windows64, "native/windows/jinput-raw_64.dll"); | |
| registerNativeLibrary("jinput", Platform.Linux32, "native/windows/libjinput-linux.so"); | |
| registerNativeLibrary("jinput", Platform.Linux64, "native/windows/libjinput-linux64.so"); | |
| registerNativeLibrary("jinput", Platform.MacOSX32, "native/macosx/libjinput-osx.jnilib", "libjinput-osx.dylib"); | |
| registerNativeLibrary("jinput", Platform.MacOSX64, "native/macosx/libjinput-osx.jnilib", "libjinput-osx.dylib"); | |
| // JInput Auxiliary (only required on Windows) | |
| registerNativeLibrary("jinput-dx8", Platform.Windows32, "native/windows/jinput-dx8.dll"); | |
| registerNativeLibrary("jinput-dx8", Platform.Windows64, "native/windows/jinput-dx8_64.dll"); | |
| registerNativeLibrary("jinput-dx8", Platform.Linux32, null); | |
| registerNativeLibrary("jinput-dx8", Platform.Linux64, null); | |
| registerNativeLibrary("jinput-dx8", Platform.MacOSX32, null); | |
| registerNativeLibrary("jinput-dx8", Platform.MacOSX64, null); |
- NativeLibraryLoader is never used by jme3-lwjgl3. LWJGL 3 uses its own SharedLibraryLoader so we should remove lwjgl3 libraries from there as it is misleading. Also trying to load lwjgl3 libraries via NativeLibraryLoader won't work anyway and will produce an UnsatisfiedLinkError as it wouldn't find the libraries because of a wrong path.
SEVERE: Uncaught exception thrown in Thread[jME3 Main,5,main]
java.lang.UnsatisfiedLinkError: The required native library 'lwjgl' was not found in the classpath via 'native/linux/liblwjgl.so'. Error message: no lwjgl in java.library.path
at com.jme3.system.NativeLibraryLoader.loadNativeLibrary(NativeLibraryLoader.java:590)
at jme3test.helloworld.HelloAudio.simpleInitApp(HelloAudio.java:27)
at com.jme3.app.SimpleApplication.initialize(SimpleApplication.java:240)
at com.jme3.system.lwjgl.LwjglWindow.initInThread(LwjglWindow.java:601)
at com.jme3.system.lwjgl.LwjglWindow.run(LwjglWindow.java:704)
at java.lang.Thread.run(Thread.java:750)
- It does not register the ARM natives for macOS and Linux.
Thoughts?
Metadata
Metadata
Assignees
Labels
defectSomething that is supposed to work, but doesn't. Less severe than a "bug"Something that is supposed to work, but doesn't. Less severe than a "bug"