Package com.formdev.flatlaf.util
Class NativeLibrary
java.lang.Object
com.formdev.flatlaf.util.NativeLibrary
Helper class to load native library (.dll, .so or .dylib) stored in Jar.
Copies native library to users temporary folder before loading it.
- Since:
- 1.1
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final String
private static boolean
private final boolean
-
Constructor Summary
ConstructorsConstructorDescriptionNativeLibrary
(File libraryFile, boolean supported) Load native library from given file.NativeLibrary
(String libraryName, boolean supported) Load native library usingSystem.loadLibrary(String)
.NativeLibrary
(String libraryName, ClassLoader classLoader, boolean supported) Load native library from given classloader. -
Method Summary
Modifier and TypeMethodDescriptionprivate static Path
createTempFile
(String libraryName) private static String
decorateLibraryName
(String libraryName) Add prefix and suffix to library name.private static void
deleteOrMarkForDeletion
(File file) private static void
deleteTemporaryFiles
(Path tempDir) private static Path
boolean
isLoaded()
Returns whether the native library is loaded.private boolean
loadLibraryFromFile
(File libraryFile) private static boolean
loadLibraryFromJar
(String libraryName, ClassLoader classLoader) private boolean
loadLibraryFromSystem
(String libraryName)
-
Field Details
-
DELETE_SUFFIX
- See Also:
-
deletedTemporary
private static boolean deletedTemporary -
loaded
private final boolean loaded
-
-
Constructor Details
-
NativeLibrary
Load native library from given classloader.Note regarding Java Platform Module System (JPMS): If classloader is
null
, the library can be only loaded from the module that contains this class. If classloader is notnull
, then the package that contains the library must be specified as "open" in module-info.java of the module that contains the library.- Parameters:
libraryName
- resource name of the native library (without "lib" prefix and without extension)classLoader
- the classloader used to locate the library, ornull
supported
- whether the native library is supported on the current platform
-
NativeLibrary
Load native library from given file.- Parameters:
libraryFile
- the file of the native librarysupported
- whether the native library is supported on the current platform- Since:
- 2
-
NativeLibrary
Load native library usingSystem.loadLibrary(String)
. Searches for the library in classloader of caller (usingClassLoader.findLibrary(String)
) and in paths specified in system propertiessun.boot.library.path
andjava.library.path
.- Parameters:
libraryName
- name of the native library (without "lib" prefix and without extension)supported
- whether the native library is supported on the current platform- Since:
- 2.6
-
-
Method Details
-
isLoaded
public boolean isLoaded()Returns whether the native library is loaded.Returns
false
if not supported on current platform as specified in constructor or if loading failed. -
loadLibraryFromJar
-
loadLibraryFromFile
-
loadLibraryFromSystem
-
decorateLibraryName
Add prefix and suffix to library name.- Windows: libraryName + ".dll"
- macOS: "lib" + libraryName + ".dylib"
- Linux: "lib" + libraryName + ".so"
-
createTempFile
- Throws:
IOException
-
getTempDir
- Throws:
IOException
-
deleteTemporaryFiles
-
deleteOrMarkForDeletion
-