public class JNILibLoaderBase extends Object
Modifier and Type | Class | Description |
---|---|---|
static interface |
JNILibLoaderBase.LoaderAction |
Modifier and Type | Field | Description |
---|---|---|
static boolean |
DEBUG |
|
protected static boolean |
PERF |
Constructor | Description |
---|---|
JNILibLoaderBase() |
Modifier and Type | Method | Description |
---|---|---|
static void |
addLoaded(String libName) |
|
static boolean |
addNativeJarLibs(Class<?>[] classesFromJavaJars,
String singleJarMarker) |
Loads and adds a JAR file's native library to the TempJarCache.
The native library JAR file's URI is derived as follows: [1] GLProfile.class ->
[2] http://lala/gluegen-rt.jar ->
[3] http://lala/gluegen-rt ->
[4] http://lala/gluegen-rt-natives-'os.and.arch'.jar
Where:
[1] is one of classesFromJavaJars
[2] is it's complete URI
[3] is it's base URI
[4] is the derived native JAR filename
|
static boolean |
addNativeJarLibsJoglCfg(Class<?>[] classesFromJavaJars) |
Loads and adds a JAR file's native library to the TempJarCache,
calling
addNativeJarLibs(Class[], String)
with default JOGL deployment configuration: |
static void |
disableLoading() |
|
static void |
enableLoading() |
|
static boolean |
isLoaded(String libName) |
|
protected static boolean |
loadLibrary(String libname,
boolean ignoreError,
ClassLoader cl) |
Loads the library specified by libname, using the
JNILibLoaderBase.LoaderAction set by setLoadingAction(LoaderAction) .The implementation should ignore, if the library has been loaded already. |
protected static void |
loadLibrary(String libname,
String[] preload,
boolean preloadIgnoreError,
ClassLoader cl) |
Loads the library specified by libname, using the
JNILibLoaderBase.LoaderAction set by setLoadingAction(LoaderAction) .Optionally preloads the libraries specified by preload. The implementation should ignore, if any library has been loaded already. |
static void |
setLoadingAction(JNILibLoaderBase.LoaderAction action) |
public static boolean isLoaded(String libName)
public static void addLoaded(String libName)
public static void disableLoading()
public static void enableLoading()
public static void setLoadingAction(JNILibLoaderBase.LoaderAction action)
public static final boolean addNativeJarLibsJoglCfg(Class<?>[] classesFromJavaJars)
addNativeJarLibs(Class[], String)
with default JOGL deployment configuration:
return JNILibLoaderBase.addNativeJarLibs(classesFromJavaJars, "-all");If
Class1.class
is contained in a JAR file which name includes singleJarMarker
-all,
implementation will attempt to resolve the native JAR file as follows:
public static boolean addNativeJarLibs(Class<?>[] classesFromJavaJars, String singleJarMarker)
GLProfile.class
-> http://lala/gluegen-rt.jar
-> http://lala/gluegen-rt
-> http://lala/gluegen-rt-natives-'os.and.arch'.jar
classesFromJavaJars
Generic description:
final Class>[] classesFromJavaJars = new Class>[] { Class1.class, Class2.class }; JNILibLoaderBase.addNativeJarLibs(classesFromJavaJars, "-all");If
Class1.class
is contained in a JAR file which name includes singleJarMarker
, here -all,
implementation will attempt to resolve the native JAR file as follows:
Examples:
JOCL:
// only: jocl.jar -> jocl-natives-os.and.arch.jar addNativeJarLibs(new Class>[] { JOCLJNILibLoader.class }, null, null );
JOGL:
final ClassLoader cl = GLProfile.class.getClassLoader(); // jogl-all.jar -> jogl-all-natives-os.and.arch.jar // jogl-all-noawt.jar -> jogl-all-noawt-natives-os.and.arch.jar // jogl-all-mobile.jar -> jogl-all-mobile-natives-os.and.arch.jar // jogl-all-android.jar -> jogl-all-android-natives-os.and.arch.jar // nativewindow.jar -> nativewindow-natives-os.and.arch.jar // jogl.jar -> jogl-natives-os.and.arch.jar // newt.jar -> newt-natives-os.and.arch.jar (if available) final String newtFactoryClassName = "com.jogamp.newt.NewtFactory"; final Class>[] classesFromJavaJars = new Class>[] { NWJNILibLoader.class, GLProfile.class, null }; if( ReflectionUtil.isClassAvailable(newtFactoryClassName, cl) ) { classesFromJavaJars[2] = ReflectionUtil.getClass(newtFactoryClassName, false, cl); } JNILibLoaderBase.addNativeJarLibs(classesFromJavaJars, "-all");
classesFromJavaJars
- For each given Class, load the native library JAR.singleJarMarker
- Optional string marker like "-all" to identify the single 'all-in-one' JAR file
after which processing of the class array shall stop.protected static boolean loadLibrary(String libname, boolean ignoreError, ClassLoader cl)
JNILibLoaderBase.LoaderAction
set by setLoadingAction(LoaderAction)
.libname
- the library to loadignoreError
- if true, errors during loading the library should be ignoredcl
- optional ClassLoader, used to locate the libraryprotected static void loadLibrary(String libname, String[] preload, boolean preloadIgnoreError, ClassLoader cl)
JNILibLoaderBase.LoaderAction
set by setLoadingAction(LoaderAction)
.libname
- the library to loadpreload
- the libraries to load before loading the main library if not nullpreloadIgnoreError
- if true, errors during loading the preload-libraries should be ignoredcl
- optional ClassLoader, used to locate the library