public class JNILibLoaderBase extends Object
Modifier and Type | Class and Description |
---|---|
static interface |
JNILibLoaderBase.LoaderAction |
Modifier and Type | Field and Description |
---|---|
static boolean |
DEBUG |
Constructor and Description |
---|
JNILibLoaderBase() |
Modifier and Type | Method and Description |
---|---|
static void |
addLoaded(String libName) |
static boolean |
addNativeJarLibs(Class<?>[] classesFromJavaJars,
String singleJarMarker,
String[] stripBasenameSuffixes)
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 |
addNativeJarLibs(Class<?> classFromJavaJar,
String nativeJarBasename)
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/ ->
[4] http://lala/'nativeJarBaseName'-'os.and.arch'.jar
Where:
[1] is the classFromJavaJar
[2] is it's URI path
[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, 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 addNativeJarLibs(Class<?> classFromJavaJar, String nativeJarBasename)
GLProfile.class
-> http://lala/
-> http://lala/'nativeJarBaseName'-'os.and.arch'.jar
classFromJavaJar
classFromJavaJar
- GLProfilenativeJarBasename
- jogl-allpublic static final boolean addNativeJarLibsJoglCfg(Class<?>[] classesFromJavaJars)
addNativeJarLibs(Class[], String, String[])
with default JOGL deployment configuration:
return JNILibLoaderBase.addNativeJarLibs(classesFromJavaJars, "-all", new String[] { "-noawt", "-mobile", "-core", "-android" } );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, String[] stripBasenameSuffixes)
GLProfile.class
-> http://lala/gluegen-rt.jar
-> http://lala/gluegen-rt
-> http://lala/gluegen-rt-natives-'os.and.arch'.jar
classesFromJavaJars
Generic description:
final ClassLoader cl = GLProfile.class.getClassLoader(); final String newtFactoryClassName = "com.jogamp.newt.NewtFactory"; final Class>[] classesFromJavaJars = new Class>[] { Class1.class, Class2.class }; JNILibLoaderBase.addNativeJarLibs(classesFromJavaJars, "-all", new String[] { "-suff1", "-suff2" } );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 );Newt Only:
// either: [jogl-all.jar, jogl-all-noawt.jar, jogl-all-mobile.jar, jogl-all-android.jar] -> jogl-all-natives-os.and.arch.jar // or: nativewindow-core.jar -> nativewindow-natives-os.and.arch.jar, // newt-core.jar -> newt-natives-os.and.arch.jar JNILibLoaderBase.addNativeJarLibs(new Class>[] { NWJNILibLoader.class, NEWTJNILibLoader.class }, "-all", new String[] { "-noawt", "-mobile", "-core", "-android" } );
JOGL:
final ClassLoader cl = GLProfile.class.getClassLoader(); // either: [jogl-all.jar, jogl-all-noawt.jar, jogl-all-mobile.jar, jogl-all-android.jar] -> jogl-all-natives-os.and.arch.jar // or: nativewindow-core.jar -> nativewindow-natives-os.and.arch.jar, // jogl-core.jar -> jogl-natives-os.and.arch.jar, // (newt-core.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", new String[] { "-noawt", "-mobile", "-core", "-android" } );
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.stripBasenameSuffixes
- Optional substrings to be stripped of the base URIprotected 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