diff --git a/pom.xml b/pom.xml index fdfe086..655c569 100755 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 org.xerial.snappy snappy-java - 1.0.5.2 + 1.0.5.3 Snappy for Java snappy-java: A fast compression/decompression library bundle diff --git a/src/main/java/org/xerial/snappy/SnappyLoader.java b/src/main/java/org/xerial/snappy/SnappyLoader.java index 99b0e7a..579e228 100755 --- a/src/main/java/org/xerial/snappy/SnappyLoader.java +++ b/src/main/java/org/xerial/snappy/SnappyLoader.java @@ -38,10 +38,7 @@ import java.security.DigestInputStream; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.security.ProtectionDomain; -import java.util.ArrayList; -import java.util.Enumeration; -import java.util.List; -import java.util.Properties; +import java.util.*; /** * Internal only - Do not use this class. This class loads a native @@ -366,8 +363,10 @@ public class SnappyLoader */ private static File extractLibraryFile(String libFolderForCurrentOS, String libraryFileName, String targetFolder) { String nativeLibraryFilePath = libFolderForCurrentOS + "/" + libraryFileName; - final String prefix = "snappy-" + getVersion() + "-"; - String extractedLibFileName = prefix + libraryFileName; + + // Attach UUID to the native library file to ensure multiple class loaders can read the libsnappy-java multiple times. + String uuid = UUID.randomUUID().toString(); + String extractedLibFileName = String.format("snappy-%s-%s-%s", getVersion(), uuid, libraryFileName); File extractedLibFile = new File(targetFolder, extractedLibFileName); try {