diff --git a/bindings/java/build-unix.xml b/bindings/java/build-unix.xml index 7e9cab9d6cfff023a0d688342d59a81de32d9ba9..7d50e5b5809f978ffa44d3801648e973686f14f4 100644 --- a/bindings/java/build-unix.xml +++ b/bindings/java/build-unix.xml @@ -42,10 +42,16 @@ <property environment="env"/> <property name="jni.dylib" location="${basedir}/jni/.libs/libtsk_jni.dylib" /> <property name="jni.jnilib" value="libtsk_jni.jnilib" /> + <property name="zlib.jni" location="/usr/lib/libz.dylib"/> + <property name="libewf.jni" location="/usr/local/lib/libewf.dylib"/> <!-- x86_64 --> <copy file="${jni.dylib}" tofile="${x86_64}/mac/${jni.jnilib}"/> + <copy file="${zlib.jni}" tofile="${x86_64}/mac/zlib.dylib"/> + <copy file="${libewf.jni}" tofile="${x86_64}/mac/libewf.dylib"/> <!-- amd64 --> <copy file="${jni.dylib}" tofile="${amd64}/mac/${jni.jnilib}"/> + <copy file="${zlib.jni}" tofile="${x86_64}/mac/zlib.dylib"/> + <copy file="${libewf.jni}" tofile="${x86_64}/mac/libewf.dylib"/> </target> <!-- Non-OS X --> diff --git a/bindings/java/src/org/sleuthkit/datamodel/LibraryUtils.java b/bindings/java/src/org/sleuthkit/datamodel/LibraryUtils.java index 502fb99025ae524af6a6e908581c4fb38e979c08..dd7e506dfec352291f7cbccc0c340a4988a84831 100644 --- a/bindings/java/src/org/sleuthkit/datamodel/LibraryUtils.java +++ b/bindings/java/src/org/sleuthkit/datamodel/LibraryUtils.java @@ -38,6 +38,7 @@ public class LibraryUtils { public static final Lib[] CRT_LIBS = new Lib[] { Lib.MSVCP, Lib.MSVCR }; public static final Lib[] OTHER_LIBS = new Lib[] { Lib.ZLIB, Lib.LIBEWF }; + /** * The libraries the TSK Datamodel needs. */ @@ -71,35 +72,13 @@ public String getUnixName() { * @return */ public static boolean loadAuxilliaryLibs() { + System.out.println("Java lib path: " + System.getProperty("java.library.path")); boolean loaded = true; if (LibraryUtils.isWindows()) { - try { - // on windows force loading ms crt dependencies first - // in case linker can't find them on some systems - // Note: if shipping with a different CRT version, this will only print a warning - // and try to use linker mechanism to find the correct versions of libs. - // We should update this if we officially switch to a new version of CRT/compiler - for(LibraryUtils.Lib crt : LibraryUtils.getCRTLibs()) { - loaded = LibraryUtils.loadLibFromJar(crt); - if(!loaded) { - System.out.println("SleuthkitJNI: failed to load " + crt.getLibName()); - } else { - System.out.println("SleuthkitJNI: loaded " + crt.getLibName()); - } - } - } catch (UnsatisfiedLinkError e1) { - System.out.println(e1.toString()); - try { - //Try to load from system path. - System.out.println("Can't find CRT libraries, attempting to load from System.loadLibrary"); - System.loadLibrary("msvcr100"); - System.loadLibrary("msvcp100"); - loaded = true; - } catch (UnsatisfiedLinkError e2) { - System.out.println("SleuthkitJNI: error loading CRT libraries, " + e2.toString()); - loaded = false; - } - } + loaded = LibraryUtils.loadCRTLibs(); + } + + if (! LibraryUtils.isLinux()) { for(LibraryUtils.Lib lib : LibraryUtils.getLibs()) { loaded = LibraryUtils.loadLibFromJar(lib); @@ -110,9 +89,11 @@ public static boolean loadAuxilliaryLibs() { } } } else { + System.out.println("In unix path."); // Unix platform for (Lib lib : LibraryUtils.getLibs()) { try { + System.out.println("Lib name: " + lib.getUnixName()); System.loadLibrary(lib.getUnixName()); System.out.println("SleuthkitJNI: loaded " + lib.getLibName()); } catch (UnsatisfiedLinkError e) { @@ -138,6 +119,43 @@ public static boolean loadSleuthkitJNI() { } return loaded; } + + /** Load the CRT Libraries. + * + * @return + */ + private static boolean loadCRTLibs() { + boolean loaded = true; + try { + // on windows force loading ms crt dependencies first + // in case linker can't find them on some systems + // Note: if shipping with a different CRT version, this will only print a warning + // and try to use linker mechanism to find the correct versions of libs. + // We should update this if we officially switch to a new version of CRT/compiler + for(LibraryUtils.Lib crt : LibraryUtils.getCRTLibs()) { + loaded = LibraryUtils.loadLibFromJar(crt); + if(!loaded) { + System.out.println("SleuthkitJNI: failed to load " + crt.getLibName()); + } else { + System.out.println("SleuthkitJNI: loaded " + crt.getLibName()); + } + } + } catch (UnsatisfiedLinkError e1) { + System.out.println(e1.toString()); + try { + //Try to load from system path. + System.out.println("Can't find CRT libraries, attempting to load from System.loadLibrary"); + System.loadLibrary("msvcr100"); + System.loadLibrary("msvcp100"); + loaded = true; + } catch (UnsatisfiedLinkError e2) { + System.out.println("SleuthkitJNI: error loading CRT libraries, " + e2.toString()); + loaded = false; + } + } + return loaded; + } + /** * Get the name of the current platform. *