Преглед на файлове

* Fix jinput native library loading - now the JNI library name is based on the name in the jar

shadowislord преди 11 години
родител
ревизия
48ccb0fe56
променени са 1 файла, в които са добавени 10 реда и са изтрити 9 реда
  1. 10 9
      jme3-desktop/src/main/java/com/jme3/system/NativeLibraryLoader.java

+ 10 - 9
jme3-desktop/src/main/java/com/jme3/system/NativeLibraryLoader.java

@@ -355,19 +355,20 @@ public final class NativeLibraryLoader {
         // Determine what filename it should be extracted as.
         String loadedAsFileName;
         if (library.isJNI()) {
-            String nameWithArch;
+            // JNI libraries on Mac / JDK6 use jnilib extension.
+            // JNI libraries on Mac / JDK7 use dylib extension.
+            String fileNameInJarWithoutExtension 
+                    = fileNameInJar.substring(0, fileNameInJar.lastIndexOf("."));
             
-            // Append "64" to path 
-            // so that we don't overwrite the 32-bit version.
-            if (platform.is64Bit()) {
-                nameWithArch = name + "64";
+            String systemJniExtension;
+            String dummyLib = System.mapLibraryName("");
+            if (dummyLib.contains(".")) {
+                systemJniExtension = dummyLib.substring(dummyLib.lastIndexOf("."));
             } else {
-                nameWithArch = name;
+                systemJniExtension = "";
             }
             
-            // JNI libraries on Mac / JDK6 use jnilib extension.
-            // JNI libraries on Mac / JDK7 use dylib extension.
-            loadedAsFileName = System.mapLibraryName(nameWithArch);
+            loadedAsFileName = fileNameInJarWithoutExtension + systemJniExtension;
         } else {
             // Not a JNI library.
             // Just use the original filename as it is in the JAR.