< prev index next >

src/java.base/share/classes/jdk/internal/nicl/LdLoader.java

Print this page

        

*** 35,50 **** public class LdLoader extends LibraryLoader { private static final boolean DEBUG = Boolean.parseBoolean( privilegedGetProperty("jdk.internal.nicl.LdLoader.DEBUG")); private final String[] usr_paths; // preloaded/built-in library private final UnixLibrary defaultLibrary; ! private String[] getUserClassPath() { return AccessController.doPrivileged((PrivilegedAction<String[]>)() -> { try { Field f = ClassLoader.class.getDeclaredField("usr_paths"); f.setAccessible(true); return (String[])f.get(null); --- 35,54 ---- public class LdLoader extends LibraryLoader { private static final boolean DEBUG = Boolean.parseBoolean( privilegedGetProperty("jdk.internal.nicl.LdLoader.DEBUG")); + // copy of ClassLoader.usr_paths field private final String[] usr_paths; // preloaded/built-in library private final UnixLibrary defaultLibrary; ! private String[] getUserLibraryPaths() { ! // ClassLoader.usr_paths is initialized from "java.library.path" System property. ! // FIXME: we should define and use a private API rather than reading a ! // private static non-final lazily initialized field from ClassLoader. return AccessController.doPrivileged((PrivilegedAction<String[]>)() -> { try { Field f = ClassLoader.class.getDeclaredField("usr_paths"); f.setAccessible(true); return (String[])f.get(null);
*** 53,63 **** } }); } public LdLoader() { ! this.usr_paths = getUserClassPath(); this.defaultLibrary = new UnixLibrary(null); } @Override public Library getDefaultLibrary() { --- 57,67 ---- } }); } public LdLoader() { ! this.usr_paths = getUserLibraryPaths(); this.defaultLibrary = new UnixLibrary(null); } @Override public Library getDefaultLibrary() {
*** 84,95 **** System.err.println(Pointer.toString(err)); } } throw new UnsatisfiedLinkError("Can't load library: " + libPath); ! } catch (Throwable t) { ! throw new RuntimeException(t); } } } @Override --- 88,101 ---- System.err.println(Pointer.toString(err)); } } throw new UnsatisfiedLinkError("Can't load library: " + libPath); ! } catch (RuntimeException re) { ! throw re; ! } catch (Exception e) { ! throw new RuntimeException(e); } } } @Override
*** 104,114 **** for (String usr_path : usr_paths) { String libPath = usr_path + File.separator + name; try { return tryLoadLibrary(libPath); ! } catch (UnsatisfiedLinkError e) { // ignore and try next path } } throw new UnsatisfiedLinkError(name); --- 110,123 ---- for (String usr_path : usr_paths) { String libPath = usr_path + File.separator + name; try { return tryLoadLibrary(libPath); ! } catch (RuntimeException | UnsatisfiedLinkError e) { ! if (DEBUG) { ! System.err.println(e); ! } // ignore and try next path } } throw new UnsatisfiedLinkError(name);
< prev index next >