| java.lang.Object com.izforge.izpack.util.Librarian
Librarian | public class Librarian implements CleanupClient(Code) | | This class handles loading of native libraries. There must only be one instance of
Librarian per Java runtime, therefore this class is implemented as a 'Singleton'.
Librarian is capable of loading native libraries from a variety of different
source locations. However, you should place your library files in the 'native' directory. The
primary reason for supporting different source locations is to facilitate testing in a
development environment, without the need to actually packing the application into a *.jar file.
version: 1.0 / 1/30/02 author: Elmar Grom |
Method Summary | |
public void | cleanUp() This method attempts to remove all native libraries that have been temporarily created from
the system.
The used method for clean up depends on the VM version.
If the ersion is 1.5.x or higher this process should be exit in one second, else
the native libraries will be not deleted.
Tests with the different methods produces hinds that the
FreeLibraryAndExitThread (handle, 0) call in the dlls are the
reason for VM crashes (version 1.5.x). | public static Librarian | getInstance() Returns an instance of Librarian to use. | public synchronized void | loadArchSpecificLibrary(String name, NativeLibraryClient client) Loads the requested library. | public synchronized void | loadLibrary(String name, NativeLibraryClient client) | public void | setNativeDirectory(String directory) Sets the directory where Librarian will search for native files. |
cleanUp | public void cleanUp()(Code) | | This method attempts to remove all native libraries that have been temporarily created from
the system.
The used method for clean up depends on the VM version.
If the ersion is 1.5.x or higher this process should be exit in one second, else
the native libraries will be not deleted.
Tests with the different methods produces hinds that the
FreeLibraryAndExitThread (handle, 0) call in the dlls are the
reason for VM crashes (version 1.5.x). May be this is a bug in the VM.
But never seen a docu that this behavior is compatible with a VM.
Since more than a year all 1.5 versions produce this crash. Therfore we make
now a work around for it.
But the idea to exit the thread for removing the file locking to give the
possibility to delete the dlls are really nice. Therefore we use it with
VMs which are compatible with it. (Klaus Bartz 2006.06.20)
|
getInstance | public static Librarian getInstance()(Code) | | Returns an instance of Librarian to use.
an instance of Librarian . |
loadArchSpecificLibrary | public synchronized void loadArchSpecificLibrary(String name, NativeLibraryClient client) throws Exception(Code) | | Loads the requested library. If the library is already loaded, this method returns
immediately, without an attempt to load the library again.
Invocation Example: This assumes that the call is made from the class that links with
the library. If this is not the case, this must be replaced by the reference
of the class that links with the library.
Librarian.getInstance ().loadLibrary ("MyLibrary", this);
Loading of a native library file works as follows:
- If the library is already loaded there is nothing to do.
- An attempt is made to load the library by its name. If there is no system path set to
the library, this attempt will fail.
- If the client is located on the local file system, an attempt is made to load the
library from the local files system as well.
- If the library is located inside a *.jar file, it is extracted to 'java.io.tmpdir' and
an attempt is made to load it from there.
Loading from the local file system and from the *.jar file is attempted for the following
potential locations of the library in this order:
- The same directory where the client is located
- The native library directory
Parameters: name - the name of the library. A file extension and path are not needed, in fact ifsupplied, both is stripped off. A specific extension is appended. Parameters: client - the object that made the load request See Also: Librarian.setNativeDirectory exception: Exception - if all attempts to load the library fail. |
setNativeDirectory | public void setNativeDirectory(String directory)(Code) | | Sets the directory where Librarian will search for native files. Directories
are denoted relative to the root, where the root is the same location where the top level
Java package directory is located (usually called com ). The default directory
is native .
Parameters: directory - the directory where native files are located. |
|
|