diff --git a/java/src/main/java/org/rocksdb/util/Environment.java b/java/src/main/java/org/rocksdb/util/Environment.java index 6fccc43bb..764aa964d 100644 --- a/java/src/main/java/org/rocksdb/util/Environment.java +++ b/java/src/main/java/org/rocksdb/util/Environment.java @@ -4,6 +4,10 @@ public class Environment { private static String OS = System.getProperty("os.name").toLowerCase(); private static String ARCH = System.getProperty("os.arch").toLowerCase(); + public static boolean isPowerPC() { + return ARCH.contains("ppc"); + } + public static boolean isWindows() { return (OS.contains("win")); } @@ -36,16 +40,22 @@ public class Environment { public static String getJniLibraryName(final String name) { if (isUnix()) { - final String arch = (is64Bit()) ? "64" : "32"; - return String.format("%sjni-linux%s", name, arch); + final String arch = is64Bit() ? "64" : "32"; + if(isPowerPC()) { + return String.format("%sjni-linux-ppc%s", name, arch); + } else { + return String.format("%sjni-linux%s", name, arch); + } } else if (isMac()) { return String.format("%sjni-osx", name); } else if (isSolaris()) { - return String.format("%sjni-solaris%d", name, is64Bit() ? 64 : 32); + final String arch = is64Bit() ? "64" : "32"; + return String.format("%sjni-solaris%s", name, arch); } else if (isWindows() && is64Bit()) { return String.format("%sjni-win64", name); } - throw new UnsupportedOperationException(); + + throw new UnsupportedOperationException(String.format("Cannot determine JNI library name for ARCH='%s' OS='%s' name='%s'", ARCH, OS, name)); } public static String getJniLibraryFileName(final String name) {