In order to avoid a functional regression with previous releases, the JAR file needs to be able to load either the 64-bit or 32-bit JNI library on Un*x systems.


git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@950 632fc199-4ca6-4c93-a231-07263d6284db
diff --git a/java/README b/java/README
index 2576ce2..eecc5b2 100644
--- a/java/README
+++ b/java/README
@@ -37,7 +37,16 @@
 Installation Directory
 ----------------------
 
-If the TurboJPEG JNI library (libturbojpeg.so, libturbojpeg.jnilib, or
-turbojpeg.dll) is not installed under a system library directory or under a
-directory specified in LD_LIBRARY_PATH (Unix) or PATH (Windows), then you will
-need to pass an argument of -Djava.library.path={path_to_JNI_library} to java.
+The TurboJPEG Java Wrapper will look for the TurboJPEG JNI library
+(libturbojpeg.so, libturbojpeg.jnilib, or turbojpeg.dll) in the system library
+paths or in any paths specified in LD_LIBRARY_PATH (Unix), DYLD_LIBRARY_PATH
+(Mac), or PATH (Windows.)  Failing this, on Unix and Mac systems, the wrapper
+will look for the JNI library under the library directory configured when
+libjpeg-turbo was built.  If that library directory is
+/opt/libjpeg-turbo/lib32, then /opt/libjpeg-turbo/lib64 is also searched, and
+vice versa.
+
+If you installed the JNI library into another directory, then you will need
+to pass an argument of -Djava.library.path={path_to_JNI_library} to java, or
+manipulate LD_LIBRARY_PATH, DYLD_LIBRARY_PATH, or PATH to include the directory
+containing the JNI library.
diff --git a/java/org/libjpegturbo/turbojpeg/TJLoader.java.tmpl b/java/org/libjpegturbo/turbojpeg/TJLoader.java.tmpl
index 117c8de..a4f1c87 100644
--- a/java/org/libjpegturbo/turbojpeg/TJLoader.java.tmpl
+++ b/java/org/libjpegturbo/turbojpeg/TJLoader.java.tmpl
@@ -41,7 +41,18 @@
           System.load("/usr/lib/libturbojpeg.jnilib");
         }
       } else {
-        System.load("%{__libdir}/libturbojpeg.so");
+        try {
+          System.load("%{__libdir}/libturbojpeg.so");
+        } catch (java.lang.UnsatisfiedLinkError e3) {
+          String libdir = "%{__libdir}";
+          if (libdir.equals("/opt/libjpeg-turbo/lib64")) {
+            System.load("/opt/libjpeg-turbo/lib32/libturbojpeg.so");
+          } else if (libdir.equals("/opt/libjpeg-turbo/lib32")) {
+            System.load("/opt/libjpeg-turbo/lib64/libturbojpeg.so");
+          } else {
+            throw e3;
+          }
+        }
       }
     }
   }