Package org.bytedeco.javacpp
Class Loader
- java.lang.Object
-
- org.bytedeco.javacpp.Loader
-
@Properties(inherit=javacpp.class) public class Loader extends java.lang.Object
The Loader contains functionality to load native libraries, but also has a bit of everything that does not fit anywhere else. In addition to its library loading features, it also has utility methods to get the platform name, to load properties from Java resources and from Class annotations, to extract file resources to the temporary directory, and to get theoffsetof()orsizeof()a nativestruct,class, orunionwith itsPointerpeer class and aHashMapinitialized by the native libraries insideJNI_OnLoad().
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classLoader.Detectorstatic classLoader.Helper
-
Field Summary
Fields Modifier and Type Field Description (package private) static java.io.FilecacheDirUser-specified cache directory set and returned bygetCacheDir().(package private) static booleancacheLibrariesWhether to extract libraries tocacheDir, set via "org.bytedeco.javacpp.cacheLibraries" system property.(package private) static booleancanCreateSymbolicLinkWill be set to false when symbolic link creation fails, such as on Windows.private static java.lang.ThreadLocal<java.util.Deque<java.lang.Class<?>>>classStackThe stack of classes currently being loaded to support more than one class loader.(package private) static booleanfindLibrariesWhether to search libraries in class, module, and library paths, set via "org.bytedeco.javacpp.findLibraries" system property.(package private) static java.util.Map<java.lang.String,java.net.URL[]>foundLibrariesContains all the URLs of native libraries that we found to avoid searching for them again.(package private) static java.util.Map<java.lang.String,java.lang.String>loadedLibrariesContains all the native libraries that we have loaded to avoid reloading them.private static Loggerlogger(package private) static java.util.WeakHashMap<java.lang.Class<? extends Pointer>,java.util.HashMap<java.lang.String,java.lang.Integer>>memberOffsetsContainsoffsetof()andsizeof()values of native types ofstruct,class, andunion.(package private) static booleanpathsFirstDefault value forload(..., pathsFirst)set via "org.bytedeco.javacpp.pathsFirst" system property.private static java.lang.StringPLATFORMValue created out of "java.vm.name", "os.name", and "os.arch" system properties.private static java.util.PropertiesplatformPropertiesDefault platform properties loaded and returned byloadProperties().(package private) static java.io.FiletempDirTemporary directory set and returned bygetTempDir().private static booleanWINDOWS
-
Constructor Summary
Constructors Constructor Description Loader()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static java.lang.ObjectaccessGlobalRef(Pointer globalRef)static Pointeraddressof(java.lang.String symbol)ReturnsLoader.Helper.addressof(String).static java.io.FilecacheResource(java.lang.Class cls, java.lang.String name)Extracts a resource using theClassLoaderof the specifiedClass, and returns the cachedFile.static java.io.FilecacheResource(java.lang.String name)Extracts a resource using theClassLoaderof the caller class, and returns the cachedFile.static java.io.FilecacheResource(java.net.URL resourceURL)ReturnscacheResource(resourceUrl, null)static java.io.FilecacheResource(java.net.URL resourceURL, java.lang.String target)Extracts a resource, if the size or last modified timestamp differs from what is in cache, and returns the cachedFile.static java.io.File[]cacheResources(java.lang.Class cls, java.lang.String name)Extracts resources using theClassLoaderof the specifiedClass, and returns the cachedFileobjects.static java.io.File[]cacheResources(java.lang.String name)Extracts resources using theClassLoaderof the caller class, and returns the cachedFileobjects.static booleancheckPlatform(java.lang.Class<?> cls, java.util.Properties properties)static booleancheckPlatform(java.lang.Class<?> cls, java.util.Properties properties, boolean acceptAllExtensions)static booleancheckPlatform(Platform platform, java.util.Properties properties)static booleancheckPlatform(Platform platform, java.util.Properties properties, boolean acceptAllExtensions, java.lang.String... defaultNames)static booleancheckVersion(java.lang.String groupId, java.lang.String artifactId)ReturnscheckVersion(groupId, artifactId, "-", true, getCallerClass(2)).static booleancheckVersion(java.lang.String groupId, java.lang.String artifactId, java.lang.String separator, boolean logWarnings, java.lang.Class cls)ReturnsgetVersion(groupId, artifactId, cls).split(separator)[n].equals(getVersion().split(separator)[0])wheren = versions.length - (versions[versions.length - 1].equals("SNAPSHOT") ? 2 : 1)or false on error.static voidclearCacheDir()CallsdeleteDirectory(getCacheDir()).static java.lang.StringcreateLibraryLink(java.lang.String filename, ClassProperties properties, java.lang.String libnameversion, java.lang.String... paths)Creates a version-less symbolic link to a library file, if needed.static voiddeleteDirectory(java.io.File directory)Deletes the directory and all the files in it.static voiddeleteGlobalRef(Pointer globalRef)static java.io.FileextractResource(java.lang.Class cls, java.lang.String name, java.io.File directory, java.lang.String prefix, java.lang.String suffix)Extracts by name a resource using theClassLoaderof the specifiedClass.static java.io.FileextractResource(java.lang.String name, java.io.File directory, java.lang.String prefix, java.lang.String suffix)Extracts by name a resource using theClassLoaderof the caller.static java.io.FileextractResource(java.net.URL resourceURL, java.io.File directoryOrFile, java.lang.String prefix, java.lang.String suffix)ReturnsextractResource(resourceURL, directoryOrFile, prefix, suffix, false).static java.io.FileextractResource(java.net.URL resourceURL, java.io.File directoryOrFile, java.lang.String prefix, java.lang.String suffix, boolean cacheDirectory)Extracts a resource into the specified directory and with the specified prefix and suffix for the filename.static java.io.File[]extractResources(java.lang.Class cls, java.lang.String name, java.io.File directory, java.lang.String prefix, java.lang.String suffix)Extracts by name resources using theClassLoaderof the specifiedClass.static java.io.File[]extractResources(java.lang.String name, java.io.File directory, java.lang.String prefix, java.lang.String suffix)Extracts by name resources using theClassLoaderof the caller.static java.net.URL[]findLibrary(java.lang.Class cls, ClassProperties properties, java.lang.String libnameversion)ReturnsfindLibrary(cls, properties, libnameversion, Loader.pathsFirst).static java.net.URL[]findLibrary(java.lang.Class cls, ClassProperties properties, java.lang.String libnameversion, boolean pathsFirst)Finds from where the library may be extracted and loaded among theClassresources.static java.net.URLfindResource(java.lang.Class cls, java.lang.String name)ReturnsfindResources(cls, name, 1)[0]or null if none.static java.net.URL[]findResources(java.lang.Class cls, java.lang.String name)ReturnsfindResources(cls, name, -1).static java.net.URL[]findResources(java.lang.Class cls, java.lang.String name, int maxLength)Finds by name resources using theClassand itsClassLoader.static java.io.FilegetCacheDir()Creates and returnsSystem.getProperty("org.bytedeco.javacpp.cachedir")or~/.javacpp/cache/when not set.static java.lang.ClassgetCallerClass(int i)Returns theClassobject that contains a caller's method.static java.io.FilegetCanonicalFile(java.io.File file)Returnsfile.getCanonicalFile()orfile.toPath().toRealPath().toFile()on Windows.static java.lang.StringgetCanonicalPath(java.io.File file)Returnsfile.getCanonicalPath()orfile.toPath().toRealPath().toString()on Windows.static java.lang.ClassgetEnclosingClass(java.lang.Class cls)If annotated with properties, returns the argument as "enclosing Class".static PointergetJavaVM()ReturnsLoader.Helper.getJavaVM().static java.util.Map<java.lang.String,java.lang.String>getLoadedLibraries()Returns a Map that relates each library name to the path of the loaded file.static java.lang.StringgetPlatform()ReturnsPLATFORM.static java.io.FilegetTempDir()Creates a unique name fortempDirout ofSystem.getProperty("java.io.tmpdir")andSystem.nanoTime().static java.lang.StringgetVersion()ReturnsgetVersion("org.bytedeco", "javacpp").static java.lang.StringgetVersion(java.lang.String groupId, java.lang.String artifactId)ReturnsgetVersion(groupId, artifactId, getCallerClass(2)).static java.lang.StringgetVersion(java.lang.String groupId, java.lang.String artifactId, java.lang.Class cls)Returns version property fromcls.getResource("META-INF/maven/" + groupId + "/" + artifactId + "/pom.properties").static booleanisLoadLibraries()ReturnsSystem.getProperty("org.bytedeco.javacpp.loadlibraries").static java.lang.Stringload()Returnsload(getCallerClass(2), loadProperties(), Loader.pathsFirst).static java.lang.Stringload(boolean pathsFirst)Loads native libraries associated with theClassof the caller and initializes it.static java.lang.Stringload(java.lang.Class cls)Returnsload(cls, loadProperties(), Loader.pathsFirst).static java.lang.String[]load(java.lang.Class... classes)Returnsload(classes, true).static java.lang.String[]load(java.lang.Class[] classes, boolean logMessages)Callsload(Class)on all top-level enclosing classes found in the array.static java.lang.Stringload(java.lang.Class cls, java.lang.String executable)Returnsload(cls, loadProperties(), Loader.pathsFirst, executable).static java.lang.Stringload(java.lang.Class cls, java.util.Properties properties, boolean pathsFirst)Returnsload(cls, properties, pathsFirst, null).static java.lang.Stringload(java.lang.Class cls, java.util.Properties properties, boolean pathsFirst, java.lang.String executable)Loads native libraries or executables associated with the givenClassand initializes it.static voidloadGlobal(java.lang.String filename)static java.lang.StringloadLibrary(java.lang.Class<?> cls, java.lang.String libnameversion, java.lang.String... preloaded)ReturnsloadLibrary(findResources(cls, libnameversion), libnameversion, preloaded).static java.lang.StringloadLibrary(java.lang.Class<?> cls, java.net.URL[] urls, java.lang.String libnameversion, java.lang.String... preloaded)Tries to load the library from the URLs in order, extracting resources as necessary.static java.lang.StringloadLibrary(java.lang.String libnameversion, java.lang.String... preloaded)ReturnsloadLibrary(getCallerClass(2), libnameversion, preloaded).static java.lang.StringloadLibrary(java.net.URL[] urls, java.lang.String libnameversion, java.lang.String... preloaded)ReturnsloadLibrary(null, urls, libnameversion, preloaded).static java.util.PropertiesloadProperties()ReturnsloadProperties(false).static java.util.PropertiesloadProperties(boolean forceReload)Loads thePropertiesassociated with the defaultgetPlatform().static ClassPropertiesloadProperties(java.lang.Class[] cls, java.util.Properties properties, boolean inherit)For all the classes, loads all properties from each Class annotations for the given platform.static ClassPropertiesloadProperties(java.lang.Class cls, java.util.Properties properties, boolean inherit)Loads all properties from Class annotations for the given platform.static java.util.PropertiesloadProperties(java.lang.String name, java.lang.String defaults)Loads from resources the defaultPropertiesof the specified platform name.static PointernewGlobalRef(java.lang.Object object)ReturnsLoader.Helper.newGlobalRef(Object).static intoffsetof(java.lang.Class<? extends Pointer> type, java.lang.String member)Getsoffsetof()values frommemberOffsetsfilled by native libraries.(package private) static voidputMemberOffset(java.lang.Class<? extends Pointer> type, java.lang.String member, int offset)(package private) static java.lang.ClassputMemberOffset(java.lang.String typeName, java.lang.String member, int offset)static intsizeof(java.lang.Class<? extends Pointer> type)Getssizeof()values frommemberOffsetsfilled by native libraries.static inttotalChips()ReturnsLoader.Helper.totalChips().static inttotalCores()ReturnsLoader.Helper.totalCores().static inttotalProcessors()ReturnsLoader.Helper.totalProcessors().
-
-
-
Field Detail
-
logger
private static final Logger logger
-
PLATFORM
private static final java.lang.String PLATFORM
Value created out of "java.vm.name", "os.name", and "os.arch" system properties. Returned bygetPlatform()and initialized withLoader.Detector.getPlatform().
-
WINDOWS
private static final boolean WINDOWS
-
platformProperties
private static java.util.Properties platformProperties
Default platform properties loaded and returned byloadProperties().
-
classStack
private static final java.lang.ThreadLocal<java.util.Deque<java.lang.Class<?>>> classStack
The stack of classes currently being loaded to support more than one class loader.
-
cacheDir
static java.io.File cacheDir
User-specified cache directory set and returned bygetCacheDir().
-
tempDir
static java.io.File tempDir
Temporary directory set and returned bygetTempDir().
-
foundLibraries
static java.util.Map<java.lang.String,java.net.URL[]> foundLibraries
Contains all the URLs of native libraries that we found to avoid searching for them again.
-
loadedLibraries
static java.util.Map<java.lang.String,java.lang.String> loadedLibraries
Contains all the native libraries that we have loaded to avoid reloading them.
-
canCreateSymbolicLink
static boolean canCreateSymbolicLink
Will be set to false when symbolic link creation fails, such as on Windows. Set via "org.bytedeco.javacpp.canCreateSymbolicLink" system property, defaults to false on Windows only.
-
pathsFirst
static boolean pathsFirst
Default value forload(..., pathsFirst)set via "org.bytedeco.javacpp.pathsFirst" system property.
-
cacheLibraries
static boolean cacheLibraries
Whether to extract libraries tocacheDir, set via "org.bytedeco.javacpp.cacheLibraries" system property.
-
findLibraries
static boolean findLibraries
Whether to search libraries in class, module, and library paths, set via "org.bytedeco.javacpp.findLibraries" system property.
-
memberOffsets
static java.util.WeakHashMap<java.lang.Class<? extends Pointer>,java.util.HashMap<java.lang.String,java.lang.Integer>> memberOffsets
Containsoffsetof()andsizeof()values of native types ofstruct,class, andunion. AWeakHashMapis used to prevent the Loader from hanging onto Class objects the user may be trying to unload.
-
-
Method Detail
-
getPlatform
public static java.lang.String getPlatform()
ReturnsPLATFORM.
-
getCanonicalPath
public static java.lang.String getCanonicalPath(java.io.File file) throws java.io.IOExceptionReturnsfile.getCanonicalPath()orfile.toPath().toRealPath().toString()on Windows.- Returns:
- The canonical pathname string denoting the same file or directory as that abstract pathname.
- Throws:
java.io.IOException- if an I/O error occurs- See Also:
- https://bugs.openjdk.java.net/browse/JDK-8003887
-
getCanonicalFile
public static java.io.File getCanonicalFile(java.io.File file) throws java.io.IOExceptionReturnsfile.getCanonicalFile()orfile.toPath().toRealPath().toFile()on Windows.- Returns:
- The canonical file denoting the same file or directory as that abstract pathname.
- Throws:
java.io.IOException- if an I/O error occurs- See Also:
- https://bugs.openjdk.java.net/browse/JDK-8003887
-
loadProperties
public static java.util.Properties loadProperties()
ReturnsloadProperties(false).
-
loadProperties
public static java.util.Properties loadProperties(boolean forceReload)
Loads thePropertiesassociated with the defaultgetPlatform().- Parameters:
forceReload- to reset cachedplatformPropertieseven when not null- Returns:
loadProperties(getPlatform(), null)- See Also:
loadProperties(String, String)
-
loadProperties
public static java.util.Properties loadProperties(java.lang.String name, java.lang.String defaults)Loads from resources the defaultPropertiesof the specified platform name. The resource must be at"org/bytedeco/javacpp/properties/" + name + ".properties". Also picks up system properties starting with "org.bytedeco.javacpp.platform.", which can be used to override default platform properties.- Parameters:
name- the platform namedefaults- the fallback platform name (null == "generic")- Returns:
- the Properties from resources
-
checkVersion
public static boolean checkVersion(java.lang.String groupId, java.lang.String artifactId)ReturnscheckVersion(groupId, artifactId, "-", true, getCallerClass(2)).
-
checkVersion
public static boolean checkVersion(java.lang.String groupId, java.lang.String artifactId, java.lang.String separator, boolean logWarnings, java.lang.Class cls)ReturnsgetVersion(groupId, artifactId, cls).split(separator)[n].equals(getVersion().split(separator)[0])wheren = versions.length - (versions[versions.length - 1].equals("SNAPSHOT") ? 2 : 1)or false on error. Also callsLogger.warn(String)on error whenlogWarnings && isLoadLibraries().
-
getVersion
public static java.lang.String getVersion() throws java.io.IOExceptionReturnsgetVersion("org.bytedeco", "javacpp").- Throws:
java.io.IOException
-
getVersion
public static java.lang.String getVersion(java.lang.String groupId, java.lang.String artifactId) throws java.io.IOExceptionReturnsgetVersion(groupId, artifactId, getCallerClass(2)).- Throws:
java.io.IOException
-
getVersion
public static java.lang.String getVersion(java.lang.String groupId, java.lang.String artifactId, java.lang.Class cls) throws java.io.IOExceptionReturns version property fromcls.getResource("META-INF/maven/" + groupId + "/" + artifactId + "/pom.properties").- Throws:
java.io.IOException
-
getEnclosingClass
public static java.lang.Class getEnclosingClass(java.lang.Class cls)
If annotated with properties, returns the argument as "enclosing Class". If no properties are found on the Class, makes a search for the first Class with properties that we can use, and returns it as the enclosing Class found.- Parameters:
cls- the Class to start the search from- Returns:
- the enclosing Class
- See Also:
Platform,Properties
-
loadProperties
public static ClassProperties loadProperties(java.lang.Class[] cls, java.util.Properties properties, boolean inherit)
For all the classes, loads all properties from each Class annotations for the given platform.
-
loadProperties
public static ClassProperties loadProperties(java.lang.Class cls, java.util.Properties properties, boolean inherit)
Loads all properties from Class annotations for the given platform. The platform of interest needs to be specified as the value of the "platform" key in the properties argument. It is also possible to indicate whether to load all the classes specified in theProperties.inherit()annotation recursively via the inherit argument.- Parameters:
cls- the Class of which to return Propertiesproperties- the platform Properties to inheritinherit- indicates whether or not to inherit properties from other classes- Returns:
- all the properties associated with the Class for the given platform
-
getCallerClass
public static java.lang.Class getCallerClass(int i)
Returns theClassobject that contains a caller's method.- Parameters:
i- the offset on the call stack of the method of interest- Returns:
- the Class found from the calling context, or
nullif not found
-
cacheResource
public static java.io.File cacheResource(java.lang.String name) throws java.io.IOExceptionExtracts a resource using theClassLoaderof the caller class, and returns the cachedFile.- Parameters:
name- the name of the resource passed toClass.getResource(String)- Throws:
java.io.IOException- See Also:
cacheResource(Class, String)
-
cacheResource
public static java.io.File cacheResource(java.lang.Class cls, java.lang.String name) throws java.io.IOExceptionExtracts a resource using theClassLoaderof the specifiedClass, and returns the cachedFile.- Parameters:
cls- the Class from which to load resourcesname- the name of the resource passed toClass.getResource(String)- Throws:
java.io.IOException- See Also:
cacheResource(URL)
-
cacheResources
public static java.io.File[] cacheResources(java.lang.String name) throws java.io.IOExceptionExtracts resources using theClassLoaderof the caller class, and returns the cachedFileobjects.- Parameters:
name- of the resources passed tofindResources(Class, String)- Throws:
java.io.IOException- See Also:
cacheResources(Class, String)
-
cacheResources
public static java.io.File[] cacheResources(java.lang.Class cls, java.lang.String name) throws java.io.IOExceptionExtracts resources using theClassLoaderof the specifiedClass, and returns the cachedFileobjects.- Parameters:
cls- the Class from which to load resourcesname- of the resources passed tofindResources(Class, String)- Throws:
java.io.IOException- See Also:
cacheResource(URL)
-
cacheResource
public static java.io.File cacheResource(java.net.URL resourceURL) throws java.io.IOExceptionReturnscacheResource(resourceUrl, null)- Throws:
java.io.IOException
-
cacheResource
public static java.io.File cacheResource(java.net.URL resourceURL, java.lang.String target) throws java.io.IOExceptionExtracts a resource, if the size or last modified timestamp differs from what is in cache, and returns the cachedFile. If target is not null, creates instead a symbolic link where the resource would have been extracted. Directories from JAR files are extracted recursively.- Parameters:
resourceURL- the URL of the resource to extract and cachetarget- of the symbolic link to create (must be null to have the resource actually extracted)- Returns:
- the File object representing the extracted file from the cache
- Throws:
java.io.IOException- if fails to extract resource properly- See Also:
extractResource(URL, File, String, String),cacheDir
-
extractResource
public static java.io.File extractResource(java.lang.String name, java.io.File directory, java.lang.String prefix, java.lang.String suffix) throws java.io.IOExceptionExtracts by name a resource using theClassLoaderof the caller.- Parameters:
name- the name of the resource passed toClass.getResource(String)- Throws:
java.io.IOException- See Also:
extractResource(URL, File, String, String)
-
extractResource
public static java.io.File extractResource(java.lang.Class cls, java.lang.String name, java.io.File directory, java.lang.String prefix, java.lang.String suffix) throws java.io.IOExceptionExtracts by name a resource using theClassLoaderof the specifiedClass.- Parameters:
cls- the Class from which to load resourcesname- the name of the resource passed toClass.getResource(String)- Throws:
java.io.IOException- See Also:
extractResource(URL, File, String, String)
-
extractResources
public static java.io.File[] extractResources(java.lang.String name, java.io.File directory, java.lang.String prefix, java.lang.String suffix) throws java.io.IOExceptionExtracts by name resources using theClassLoaderof the caller.- Parameters:
name- of the resources passed tofindResources(Class, String)- Throws:
java.io.IOException- See Also:
extractResources(Class, String, File, String, String)
-
extractResources
public static java.io.File[] extractResources(java.lang.Class cls, java.lang.String name, java.io.File directory, java.lang.String prefix, java.lang.String suffix) throws java.io.IOExceptionExtracts by name resources using theClassLoaderof the specifiedClass.- Parameters:
cls- the Class from which to load resourcesname- of the resources passed tofindResources(Class, String)- Throws:
java.io.IOException- See Also:
extractResource(URL, File, String, String)
-
extractResource
public static java.io.File extractResource(java.net.URL resourceURL, java.io.File directoryOrFile, java.lang.String prefix, java.lang.String suffix) throws java.io.IOExceptionReturnsextractResource(resourceURL, directoryOrFile, prefix, suffix, false).- Throws:
java.io.IOException
-
extractResource
public static java.io.File extractResource(java.net.URL resourceURL, java.io.File directoryOrFile, java.lang.String prefix, java.lang.String suffix, boolean cacheDirectory) throws java.io.IOExceptionExtracts a resource into the specified directory and with the specified prefix and suffix for the filename. If both prefix and suffix arenull, the original filename is used, so directoryOrFile must not benull. Directories from JAR files are extracted recursively.- Parameters:
resourceURL- the URL of the resource to extractdirectoryOrFile- the output directory or file (null == System.getProperty("java.io.tmpdir"))prefix- the prefix of the temporary filename to usesuffix- the suffix of the temporary filename to usecacheDirectory- to extract files from directories only when size or last modified timestamp differs- Returns:
- the File object representing the extracted file
- Throws:
java.io.IOException- if fails to extract resource properly
-
findResource
public static java.net.URL findResource(java.lang.Class cls, java.lang.String name) throws java.io.IOExceptionReturnsfindResources(cls, name, 1)[0]or null if none.- Throws:
java.io.IOException
-
findResources
public static java.net.URL[] findResources(java.lang.Class cls, java.lang.String name) throws java.io.IOExceptionReturnsfindResources(cls, name, -1).- Throws:
java.io.IOException
-
findResources
public static java.net.URL[] findResources(java.lang.Class cls, java.lang.String name, int maxLength) throws java.io.IOExceptionFinds by name resources using theClassand itsClassLoader. Names not prefixed with '/' are considered in priority relative to the Class, but parent packages, including the default one, also get searched.- Parameters:
cls- the Class from whose ClassLoader to load resourcesname- of the resources passed toClass.getResource(String)andClassLoader.getResources(String)maxLength- of the array to return, or -1 for no limit- Returns:
- URLs to the resources
- Throws:
java.io.IOException
-
deleteDirectory
public static void deleteDirectory(java.io.File directory) throws java.io.IOExceptionDeletes the directory and all the files in it.- Throws:
java.io.IOException
-
clearCacheDir
public static void clearCacheDir() throws java.io.IOExceptionCallsdeleteDirectory(getCacheDir()).- Throws:
java.io.IOException
-
getCacheDir
public static java.io.File getCacheDir() throws java.io.IOExceptionCreates and returnsSystem.getProperty("org.bytedeco.javacpp.cachedir")or~/.javacpp/cache/when not set.- Throws:
java.io.IOException
-
getTempDir
public static java.io.File getTempDir()
Creates a unique name fortempDirout ofSystem.getProperty("java.io.tmpdir")andSystem.nanoTime().- Returns:
tempDir
-
getLoadedLibraries
public static java.util.Map<java.lang.String,java.lang.String> getLoadedLibraries()
Returns a Map that relates each library name to the path of the loaded file.
-
isLoadLibraries
public static boolean isLoadLibraries()
ReturnsSystem.getProperty("org.bytedeco.javacpp.loadlibraries"). Flag set by theBuilderto tell us not to try to load anything.
-
checkPlatform
public static boolean checkPlatform(java.lang.Class<?> cls, java.util.Properties properties)
-
checkPlatform
public static boolean checkPlatform(java.lang.Class<?> cls, java.util.Properties properties, boolean acceptAllExtensions)
-
checkPlatform
public static boolean checkPlatform(Platform platform, java.util.Properties properties)
-
checkPlatform
public static boolean checkPlatform(Platform platform, java.util.Properties properties, boolean acceptAllExtensions, java.lang.String... defaultNames)
-
load
public static java.lang.String[] load(java.lang.Class... classes)
Returnsload(classes, true).
-
load
public static java.lang.String[] load(java.lang.Class[] classes, boolean logMessages)Callsload(Class)on all top-level enclosing classes found in the array.- Parameters:
classes- to try to loadlogMessages- on load or fail silently- Returns:
- filenames from each successful call to
load(Class)or null otherwise
-
load
public static java.lang.String load()
Returnsload(getCallerClass(2), loadProperties(), Loader.pathsFirst).
-
load
public static java.lang.String load(boolean pathsFirst)
Loads native libraries associated with theClassof the caller and initializes it.- Parameters:
pathsFirst- search the library paths first before bundled resources- Returns:
load(getCallerClass(2), loadProperties(), pathsFirst)- See Also:
getCallerClass(int),load(Class, Properties, boolean)
-
load
public static java.lang.String load(java.lang.Class cls)
Returnsload(cls, loadProperties(), Loader.pathsFirst).
-
load
public static java.lang.String load(java.lang.Class cls, java.lang.String executable)Returnsload(cls, loadProperties(), Loader.pathsFirst, executable).
-
load
public static java.lang.String load(java.lang.Class cls, java.util.Properties properties, boolean pathsFirst)Returnsload(cls, properties, pathsFirst, null).
-
load
public static java.lang.String load(java.lang.Class cls, java.util.Properties properties, boolean pathsFirst, java.lang.String executable)Loads native libraries or executables associated with the givenClassand initializes it.- Parameters:
cls- the Class to get native library and executable information from and to initializeproperties- the platform Properties to inheritpathsFirst- search the library paths first before bundled resourcesexecutable- the executable name whose path to return, or the first one found when null- Returns:
- the full path to the main file loaded, or the library name if unknown
(but
if (!isLoadLibraries() || cls == null) { return null; }), while in the case of optional libraries or executables, it may return null when not found - Throws:
java.lang.NoClassDefFoundError- on Class initialization failurejava.lang.UnsatisfiedLinkError- on native library loading failure or when interruptedjava.lang.IllegalArgumentException- whenexecutableis specified for a class without executables- See Also:
findLibrary(Class, ClassProperties, String, boolean),loadLibrary(URL[], String, String...)
-
findLibrary
public static java.net.URL[] findLibrary(java.lang.Class cls, ClassProperties properties, java.lang.String libnameversion)ReturnsfindLibrary(cls, properties, libnameversion, Loader.pathsFirst).
-
findLibrary
public static java.net.URL[] findLibrary(java.lang.Class cls, ClassProperties properties, java.lang.String libnameversion, boolean pathsFirst)Finds from where the library may be extracted and loaded among theClassresources. But in case that fails, and depending on the value ofpathsFirst, either as a fallback or in priority over bundled resources, also searches the paths found in the "platform.preloadpath" and "platform.linkpath" class properties (as well as the "sun.boot.library.path" and "java.library.path" system properties ifpathsFirst || !loadLibraries), in that order.- Parameters:
cls- the Class whose package name andClassLoaderare used to extract from resourcesproperties- contains the directories to scan for if we fail to extract the library from resourceslibnameversion- the name of the library + ":" + optional exact path to library + "@" + optional version tag + "#" + a second optional name used at extraction (or empty to prevent it, unless it is a second "#") + "!" to load all symbols globallypathsFirst- search the library paths first before bundled resources- Returns:
- URLs that point to potential locations of the library
-
loadLibrary
public static java.lang.String loadLibrary(java.lang.String libnameversion, java.lang.String... preloaded)ReturnsloadLibrary(getCallerClass(2), libnameversion, preloaded).
-
loadLibrary
public static java.lang.String loadLibrary(java.lang.Class<?> cls, java.lang.String libnameversion, java.lang.String... preloaded)ReturnsloadLibrary(findResources(cls, libnameversion), libnameversion, preloaded).
-
loadLibrary
public static java.lang.String loadLibrary(java.net.URL[] urls, java.lang.String libnameversion, java.lang.String... preloaded)ReturnsloadLibrary(null, urls, libnameversion, preloaded).
-
loadLibrary
public static java.lang.String loadLibrary(java.lang.Class<?> cls, java.net.URL[] urls, java.lang.String libnameversion, java.lang.String... preloaded)Tries to load the library from the URLs in order, extracting resources as necessary. Finally, if all fails, falls back onSystem.loadLibrary(String).- Parameters:
cls- the Class whoseClassLoaderis used to load the library, may be nullurls- the URLs to try loading the library fromlibnameversion- the name of the library + ":" + optional exact path to library + "@" + optional version tag + "#" + a second optional name used at extraction (or empty to prevent it, unless it is a second "#") + "!" to load all symbols globallypreloaded- libraries for which to create symbolic links in same cache directory- Returns:
- the full path of the file loaded, or the library name if unknown
(but
if (!isLoadLibraries) { return null; }) - Throws:
java.lang.UnsatisfiedLinkError- on failure or when interrupted
-
createLibraryLink
public static java.lang.String createLibraryLink(java.lang.String filename, ClassProperties properties, java.lang.String libnameversion, java.lang.String... paths)Creates a version-less symbolic link to a library file, if needed. Also creates symbolic links in given paths, with and without version.- Parameters:
filename- of the probably versioned libraryproperties- of the class associated with the librarylibnameversion- the library name and version as withloadLibrary(URL[], String, String...)(can be null)paths- where to create links, in addition to the parent directory of filename- Returns:
- the version-less filename (or null on failure), a symbolic link only if needed
-
putMemberOffset
static java.lang.Class putMemberOffset(java.lang.String typeName, java.lang.String member, int offset) throws java.lang.ClassNotFoundExceptionCalled by native libraries to putoffsetof()andsizeof()values inmemberOffsets. Tries to load the Class object for typeName using theClassLoaderof the Loader.- Parameters:
typeName- the name of the peer Class acting as interface to the native typemember- the name of the native member variable (can be null to retrieve the Class object only)offset- the value ofoffsetof()(orsizeof()whenmember.equals("sizeof"))- Returns:
Class.forName(typeName, false)- Throws:
java.lang.ClassNotFoundException- on Class initialization failure
-
putMemberOffset
static void putMemberOffset(java.lang.Class<? extends Pointer> type, java.lang.String member, int offset)
- Parameters:
type- the peer Class acting as interface to the native typemember- the name of the native member variableoffset- the value ofoffsetof()(orsizeof()whenmember.equals("sizeof"))
-
offsetof
public static int offsetof(java.lang.Class<? extends Pointer> type, java.lang.String member)
Getsoffsetof()values frommemberOffsetsfilled by native libraries.- Parameters:
type- the peer Class acting as interface to the native typemember- the name of the native member variable- Returns:
memberOffsets.get(type).get(member)
-
sizeof
public static int sizeof(java.lang.Class<? extends Pointer> type)
Getssizeof()values frommemberOffsetsfilled by native libraries.- Parameters:
type- the peer Class acting as interface to the native type- Returns:
memberOffsets.get(type).get("sizeof")
-
totalProcessors
public static int totalProcessors()
ReturnsLoader.Helper.totalProcessors().
-
totalCores
public static int totalCores()
ReturnsLoader.Helper.totalCores().
-
totalChips
public static int totalChips()
ReturnsLoader.Helper.totalChips().
-
addressof
public static Pointer addressof(java.lang.String symbol)
ReturnsLoader.Helper.addressof(String).
-
loadGlobal
public static void loadGlobal(java.lang.String filename)
-
getJavaVM
public static Pointer getJavaVM()
ReturnsLoader.Helper.getJavaVM().
-
newGlobalRef
public static Pointer newGlobalRef(java.lang.Object object)
ReturnsLoader.Helper.newGlobalRef(Object).
-
accessGlobalRef
public static java.lang.Object accessGlobalRef(Pointer globalRef)
-
deleteGlobalRef
public static void deleteGlobalRef(Pointer globalRef)
-
-