public class JarUtil extends Object
Constructor and Description |
---|
JarUtil() |
Modifier and Type | Method and Description |
---|---|
static int |
extract(File dest,
Map<String,String> nativeLibMap,
JarFile jarFile,
boolean extractNativeLibraries,
boolean extractClassFiles,
boolean extractOtherFiles)
Extract the files of the given jar file.
|
static JarFile |
getJarFile(String clazzBinName,
ClassLoader cl) |
static JarFile |
getJarFile(URL jarUrl,
ClassLoader cl) |
static String |
getJarName(String clazzBinName,
ClassLoader cl) |
static URL |
getJarURL(String clazzBinName,
ClassLoader cl) |
static URL |
getJarURL(URL baseUrl,
String jarFileName) |
static URL |
getJarURLDirname(URL jarURL) |
static Map<String,String> |
getNativeLibNames(JarFile jarFile)
Return a map from native-lib-base-name to entry-name.
|
static void |
validateCertificates(Certificate[] rootCerts,
JarFile jarFile)
Validate the certificates for each native Lib in the jar file.
|
public static String getJarName(String clazzBinName, ClassLoader cl) throws IOException
clazzBinName
- com.jogamp.common.util.cache.TempJarCachecl
- IOException
IOUtil#getClassURL(String, ClassLoader)}
public static URL getJarURL(String clazzBinName, ClassLoader cl) throws IOException
clazzBinName
- com.jogamp.common.util.cache.TempJarCachecl
- IOException
IOUtil#getClassURL(String, ClassLoader)}
public static URL getJarURLDirname(URL jarURL) throws IOException
jarURL
- jar:file:/usr/local/projects/JOGL/gluegen/build-x86_64/gluegen-rt.jar!/com/jogamp/common/util/cache/TempJarCache.classIOException
public static URL getJarURL(URL baseUrl, String jarFileName) throws IOException
baseUrl
- file:/usr/local/projects/JOGL/gluegen/build-x86_64/jarFileName
- gluegen-rt.jarIOException
public static JarFile getJarFile(String clazzBinName, ClassLoader cl) throws IOException
clazzBinName
- com.jogamp.common.util.cache.TempJarCachecl
- domainIOException
#getJarURL(String, ClassLoader)}
public static JarFile getJarFile(URL jarUrl, ClassLoader cl) throws IOException
jarURL
- jar:file:/usr/local/projects/JOGL/gluegen/build-x86_64/gluegen-rt.jar!/cl
- domainIOException
public static Map<String,String> getNativeLibNames(JarFile jarFile)
public static final int extract(File dest, Map<String,String> nativeLibMap, JarFile jarFile, boolean extractNativeLibraries, boolean extractClassFiles, boolean extractOtherFiles) throws IOException
If extractNativeLibraries
is true,
native libraries are added to the given nativeLibMap
with the base name to temp file location.
A file is identified as a native library,
if it's name complies with the running platform's native library naming scheme.
Root entries are favored over non root entries in case of naming collisions.
Example on a Unix like machine:
mylib.jar!/sub1/libsour.so -> sour (mapped, unique name) mylib.jar!/sub1/libsweet.so (dropped, root entry favored) mylib.jar!/libsweet.so -> sweet (mapped, root entry favored) mylib.jar!/sweet.dll -> (dropped, not a unix library name)
In order to be compatible with Java Web Start, we need
to extract all root entries from the jar file.
In this case, set all flags to true extractNativeLibraries
.
extractClassFiles
, extractOtherFiles
.
dest
- nativeLibMap
- jarFile
- deepDirectoryTraversal
- extractNativeLibraries
- extractClassFiles
- extractOtherFiles
- IOException
public static final void validateCertificates(Certificate[] rootCerts, JarFile jarFile) throws IOException, SecurityException
Certificate[] rootCerts = Something.class.getProtectionDomain(). getCodeSource().getCertificates();
IOException
SecurityException