System#loadLibrary(String)
,
System#load(String)
, Runtime#loadLibrary(String)
and
Runtime#load(String)
. They are caller-sensitive.
Each class loader has a NativeLibraries instance to register all of its
loaded native libraries. System::loadLibrary (and other APIs) only
allows a native library to be loaded by one class loader, i.e. one
NativeLibraries instance. Any attempt to load a native library that
has already been loaded by a class loader with another class loader
will fail.
Modifier and Type | Class and Description |
---|---|
private static class | |
pack-priv static class | |
private static class | |
pack-priv static class | NativeLibraries.NativeLibraryImpl
NativeLibraryImpl denotes a loaded native library instance. |
pack-priv static class |
Modifier and Type | Field and Description |
---|---|
private final Class | |
private final Map | |
private static final Set | |
private final ClassLoader | |
private static final boolean | |
private static final Map | |
private final boolean |
Access | Constructor and Description |
---|---|
private |
Modifier and Type | Method and Description |
---|---|
private static void | |
public long | |
private static native String | |
private NativeLibrary | |
private static Class | |
private static native boolean | load(NativeLibraries.
|
public NativeLibrary | |
private NativeLibrary | loadLibrary(Class<?>
the caller class calling System::loadLibrary fromClass, String library name name, boolean built-in library isBuiltin)Returns a NativeLibrary of the given name. |
public NativeLibrary | loadLibrary(String
library name name)Loads a native library from the system library path and java library path. |
public NativeLibrary | loadLibrary(Class<?>
the caller class calling System::loadLibrary fromClass, String library name name)Loads a native library from the system library path and java library path. |
public static NativeLibraries | newInstance(ClassLoader loader)
Creates a NativeLibraries instance for loading JNI native libraries via for System::loadLibrary use. |
private static void | |
private static native void |
caller | back to summary |
---|---|
private final Class<?> caller |
libraries | back to summary |
---|---|
private final Map<String, NativeLibraries. |
loadedLibraryNames | back to summary |
---|---|
private static final Set<String> loadedLibraryNames |
loader | back to summary |
---|---|
private final ClassLoader loader |
loadLibraryOnlyIfPresent | back to summary |
---|---|
private static final boolean loadLibraryOnlyIfPresent |
nativeLibraryLockMap | back to summary |
---|---|
private static final Map<String, NativeLibraries. |
searchJavaLibraryPath | back to summary |
---|---|
private final boolean searchJavaLibraryPath |
NativeLibraries | back to summary |
---|---|
private NativeLibraries(ClassLoader loader, Class<?> caller, boolean searchJavaLibraryPath) |
acquireNativeLibraryLock | back to summary |
---|---|
private static void acquireNativeLibraryLock(String libraryName) |
find | back to summary |
---|---|
public long find(String name) |
findBuiltinLib | back to summary |
---|---|
private static native String findBuiltinLib(String name) |
findFromPaths | back to summary |
---|---|
private NativeLibrary findFromPaths(String[] paths, Class<?> fromClass, String name) |
getFromClass | back to summary |
---|---|
private static Class |
load | back to summary |
---|---|
private static native boolean load(NativeLibraries. |
loadLibrary | back to summary |
---|---|
public NativeLibrary loadLibrary(Class<?> fromClass, File file)
|
loadLibrary | back to summary |
---|---|
private NativeLibrary loadLibrary(Class<?> fromClass, String name, boolean isBuiltin) Returns a NativeLibrary of the given name.
|
loadLibrary | back to summary |
---|---|
public NativeLibrary loadLibrary(String name) Loads a native library from the system library path and java library path.
|
loadLibrary | back to summary |
---|---|
public NativeLibrary loadLibrary(Class<?> fromClass, String name) Loads a native library from the system library path and java library path.
|
newInstance | back to summary |
---|---|
public static NativeLibraries newInstance(ClassLoader loader) Creates a NativeLibraries instance for loading JNI native libraries via for System::loadLibrary use. 1. Support of auto-unloading. The loaded native libraries are unloaded when the class loader is reclaimed. 2. Support of linking of native method. See JNI spec. 3. Restriction on a native library that can only be loaded by one class loader. Each class loader manages its own set of native libraries. The same JNI native library cannot be loaded into more than one class loader. This static factory method is intended only for System::loadLibrary use. |
releaseNativeLibraryLock | back to summary |
---|---|
private static void releaseNativeLibraryLock(String libraryName) |
unload | back to summary |
---|---|
private static native void unload(String name, boolean isBuiltin, long handle) |
Modifier and Type | Field and Description |
---|---|
private int |
Access | Constructor and Description |
---|---|
private |
Modifier and Type | Method and Description |
---|---|
public void | |
public int | |
public void |
counter | back to summary |
---|---|
private int counter |
CountedLock | back to summary |
---|---|
private CountedLock() |
decrement | back to summary |
---|---|
public void decrement() |
getCounter | back to summary |
---|---|
public int getCounter() |
increment | back to summary |
---|---|
public void increment() |
Modifier and Type | Field and Description |
---|---|
pack-priv static final String[] | |
pack-priv static final String[] |
Access | Constructor and Description |
---|---|
pack-priv |
SYS_PATHS | back to summary |
---|---|
pack-priv static final String[] SYS_PATHS |
USER_PATHS | back to summary |
---|---|
pack-priv static final String[] USER_PATHS |
LibraryPaths | back to summary |
---|---|
pack-priv LibraryPaths() |
Modifier and Type | Field and Description |
---|---|
private static Map |
Access | Constructor and Description |
---|---|
private |
Modifier and Type | Method and Description |
---|---|
private static Deque | |
private static boolean | |
private static NativeLibraries. | |
private static void | |
private static void |
nativeLibraryThreadContext | back to summary |
---|---|
private static Map<Thread, Deque<NativeLibraries. |
NativeLibraryContext | back to summary |
---|---|
private NativeLibraryContext() |
current | back to summary |
---|---|
private static Deque |
isEmpty | back to summary |
---|---|
private static boolean isEmpty() |
peek | back to summary |
---|---|
private static NativeLibraries. |
pop | back to summary |
---|---|
private static void pop() |
push | back to summary |
---|---|
private static void push(NativeLibraries. |
libraries
.
Every native library requires a particular version of JNI. This is
denoted by the private jniVersion
field. This field is set by
the VM when it loads the library, and used by the VM to pass the correct
version of JNI to the native methods.
Modifier and Type | Field and Description |
---|---|
pack-priv final Class | |
pack-priv long | |
pack-priv final boolean | |
pack-priv int | |
pack-priv final String |
Access | Constructor and Description |
---|---|
pack-priv |
Modifier and Type | Method and Description |
---|---|
pack-priv void | |
public long | find(String
the name of the symbol to be found name)Implements abstract jdk. |
public String | |
pack-priv boolean | |
private boolean | |
private Runnable |
fromClass | back to summary |
---|---|
pack-priv final Class<?> fromClass |
handle | back to summary |
---|---|
pack-priv long handle |
isBuiltin | back to summary |
---|---|
pack-priv final boolean isBuiltin |
jniVersion | back to summary |
---|---|
pack-priv int jniVersion |
name | back to summary |
---|---|
pack-priv final String name |
NativeLibraryImpl | back to summary |
---|---|
pack-priv NativeLibraryImpl(Class<?> fromClass, String name, boolean isBuiltin) |
close | back to summary |
---|---|
pack-priv void close() |
find | back to summary |
---|---|
public long find(String name) Implements abstract jdk. Doc from jdk. Finds the address of the entry of the given name. Returns 0 if not found. |
name | back to summary |
---|---|
public String name() Implements abstract jdk.
|
open | back to summary |
---|---|
pack-priv boolean open() |
throwExceptionIfFail | back to summary |
---|---|
private boolean throwExceptionIfFail()
|
unloader | back to summary |
---|---|
private Runnable unloader() |
Modifier and Type | Field and Description |
---|---|
pack-priv final long | |
pack-priv final boolean | |
pack-priv final String | |
pack-priv static final NativeLibraries. |
Access | Constructor and Description |
---|---|
pack-priv |
Modifier and Type | Method and Description |
---|---|
public void |
handle | back to summary |
---|---|
pack-priv final long handle |
isBuiltin | back to summary |
---|---|
pack-priv final boolean isBuiltin |
name | back to summary |
---|---|
pack-priv final String name |
UNLOADER | back to summary |
---|---|
pack-priv static final NativeLibraries. |
Unloader | back to summary |
---|---|
pack-priv Unloader(String name, long handle, boolean isBuiltin) |
run | back to summary |
---|---|
public void run() Implements java. Doc from java. Runs this operation.
|