Prevent Java from loading library more than once(防止 Java 多次加载库)
问题描述
I have several classes that use the same JNI library, called "jni". In each of those classes, I have a System.loadLibrary() call in the class's static initializer:
Class class1 {
static{
System.loadLibrary("jni");
}
...
}
Class class2 {
static{
System.loadLibrary("jni");
}
...
}
The only problem is, I only want System.loadLibrary() to be called once, since it can take a while. Is there an easy and clean way to prevent multiple loadings of the same library?
If the library has already be loaded any subsequent calls to load the same library will be ignored.
System.loadLibrary
:
Loads the system library specified by the libname argument. The manner in which a library name is mapped to the actual system library is system dependent.
The call System.loadLibrary(name) is effectively equivalent to the call
Runtime.getRuntime().loadLibrary(name)
Runtime.loadLibrary
:
Loads the dynamic library with the specified library name. A file containing native code is loaded from the local file system from a place where library files are conventionally obtained. The details of this process are implementation-dependent. The mapping from a library name to a specific filename is done in a system-specific manner.
First, if there is a security manager, its checkLink method is called with the libname as its argument. This may result in a security exception.
The method System.loadLibrary(String) is the conventional and convenient means of invoking this method. If native methods are to be used in the implementation of a class, a standard strategy is to put the native code in a library file (call it LibFile) and then to put a static initializer:
static { System.loadLibrary("LibFile"); }
within the class declaration. When the class is loaded and initialized, the necessary native code implementation for the native methods will then be loaded as well.
If this method is called more than once with the same library name, the second and subsequent calls are ignored.
这篇关于防止 Java 多次加载库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:防止 Java 多次加载库
基础教程推荐
- 在螺旋中写一个字符串 2022-01-01
- 如何使用 Eclipse 检查调试符号状态? 2022-01-01
- Spring Boot Freemarker从2.2.0升级失败 2022-01-01
- 首次使用 Hadoop,MapReduce Job 不运行 Reduce Phase 2022-01-01
- 如何使用 Stream 在集合中拆分奇数和偶数以及两者的总和 2022-01-01
- 由于对所需库 rt.jar 的限制,对类的访问限制? 2022-01-01
- 如何强制对超级方法进行多态调用? 2022-01-01
- 如何对 HashSet 进行排序? 2022-01-01
- Java 中保存最后 N 个元素的大小受限队列 2022-01-01
- 如何在不安装整个 WTP 包的情况下将 Tomcat 8 添加到 Eclipse Kepler 2022-01-01