/** Unload all {@link NativeLibrary}s, and remove all references. */ public final void destroy() { if(DEBUG) { System.err.println(Thread.currentThread().getName()+" - DynamicLibraryBundle.destroy() START: "+info.getClass().getName()); } toolGetProcAddressFuncNameSet = null; toolGetProcAddressHandle = 0; toolGetProcAddressComplete = false; for(int i = 0; i<nativeLibraries.size(); i++) { nativeLibraries.get(i).close(); } nativeLibraries.clear(); toolLibNames.clear(); glueLibNames.clear(); if(DEBUG) { System.err.println(Thread.currentThread().getName()+" - DynamicLibraryBundle.destroy() END: "+info.getClass().getName()); } }
private static File findSysLib(final String libName) { final ClassLoader cl = PlatformPropsImpl.class.getClassLoader(); final List<String> possibleLibPaths = NativeLibrary.enumerateLibraryPaths(libName, libName, libName, true, cl); for(int i=0; i<possibleLibPaths.size(); i++) { final String libPath = possibleLibPaths.get(i); final File lib = new File(libPath); if(DEBUG) { System.err.println("findSysLib #"+i+": test "+lib); } if( checkFileReadAccess(lib) ) { return lib; } if(DEBUG) { System.err.println("findSysLib #"+i+": "+lib+" not readable"); } } return null; }
File file = null; if( OSType.ANDROID == osType ) { file = new File(NativeLibrary.findLibrary("gluegen-rt", PlatformPropsImpl.class.getClassLoader())); } else { if( OSType.LINUX == osType ) {
final ClassLoader loader) { final List<String> paths = new ArrayList<String>(); final String libName = selectName(windowsLibName, unixLibName, macOSXLibName); if (libName == null) { return paths; final String[] baseNames = buildNames(libName); final String clPath = findLibrary(libName, loader); if (clPath != null) { paths.add(clPath); final StringTokenizer tokenizer = new StringTokenizer(javaLibraryPaths[i], File.pathSeparator); while (tokenizer.hasMoreTokens()) { addPaths(tokenizer.nextToken(), baseNames, paths); addPaths(userDir, baseNames, paths); addPaths("/Library/Frameworks/" + libName + ".Framework", baseNames, paths); addPaths("/System/Library/Frameworks/" + libName + ".Framework", baseNames, paths);
private final long dynamicLookupFunctionOnLibs(final String funcName) { if(!isToolLibLoaded() || null==funcName) { if(DEBUG_LOOKUP && !isToolLibLoaded()) { System.err.println("Lookup-Native: <" + funcName + "> ** FAILED ** Tool native library not loaded"); } return 0; } long addr = 0; NativeLibrary lib = null; if( info.shallLookupGlobal() ) { // Try a global symbol lookup first .. addr = NativeLibrary.dynamicLookupFunctionGlobal(funcName); } // Look up this function name in all known libraries for (int i=0; 0==addr && i < nativeLibraries.size(); i++) { lib = nativeLibraries.get(i); addr = lib.dynamicLookupFunction(funcName); } if(DEBUG_LOOKUP) { final String libName = ( null == lib ) ? "GLOBAL" : lib.toString(); if(0!=addr) { System.err.println("Lookup-Native: <" + funcName + "> 0x" + Long.toHexString(addr) + " in lib " + libName ); } else { System.err.println("Lookup-Native: <" + funcName + "> ** FAILED ** in libs " + nativeLibraries); } } return addr; }
final boolean searchSystemPathFirst, final ClassLoader loader, final boolean global) { final List<String> possiblePaths = enumerateLibraryPaths(windowsLibName, unixLibName, macOSXLibName, return new NativeLibrary(res, path, global); } else if( DEBUG ) { if( null != t ) {
final String libraryPath = NativeLibrary.findLibrary(libraryName, cl); // implicit TempJarCache usage if used/initialized if(DEBUG) { System.err.println("JNILibLoaderBase: loadLibraryInternal("+libraryName+"), TempJarCache: "+libraryPath); System.err.println("ERROR (retry w/ enumLibPath) - "+ex1.getMessage()); final List<String> possiblePaths = NativeLibrary.enumerateLibraryPaths(libraryName, libraryName, libraryName, true, cl);
/** * Return a map from native-lib-base-name to entry-name. */ public static Map<String, String> getNativeLibNames(final JarFile jarFile) { if (DEBUG) { System.err.println("JarUtil: getNativeLibNames: "+jarFile); } final Map<String,String> nameMap = new HashMap<String, String>(); final Enumeration<JarEntry> entries = jarFile.entries(); while (entries.hasMoreElements()) { final JarEntry entry = entries.nextElement(); final String entryName = entry.getName(); final String baseName = NativeLibrary.isValidNativeLibraryName(entryName, false); if(null != baseName) { nameMap.put(baseName, entryName); } } return nameMap; }
public static final String findLibrary(final String libName, final ClassLoader loader) { String res = null; if(TempJarCache.isInitialized()) { res = TempJarCache.findLibrary(libName); if (DEBUG) { System.err.println("NativeLibrary.findLibrary(<"+libName+">) (TempJarCache): "+res); } } if(null == res) { res = findLibraryImpl(libName, loader); if (DEBUG) { System.err.println("NativeLibrary.findLibrary(<"+libName+">, "+loader+") (CL): "+res); } } return res; } }
public synchronized static final String findLibrary(final String libName) { checkInitialized(); // try with mapped library basename first String path = nativeLibMap.get(libName); if(null == path) { // if valid library name, try absolute path in temp-dir if(null != NativeLibrary.isValidNativeLibraryName(libName, false)) { final File f = new File(tmpFileCache.getTempDir(), libName); if(f.exists()) { path = f.getAbsolutePath(); } } } return path; }
final String libBaseName = NativeLibrary.isValidNativeLibraryName(entryName, false); final boolean isNativeLib = null != libBaseName; if(isNativeLib) {