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 classesFromJavaJarsGeneric 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