
解析System.load&System.loadLibrary
5星
- 浏览量: 0
- 大小:None
- 文件类型:PDF
简介:
在Java编程语言中,`System.load`与`System.loadLibrary`均是用于加载本地库(Native Library)的方法,并主要用于加载本地库(Native Library),并支持调用C/C++编写的函数,作为Java本地接口的一部分(Java Native Interface, JNI)。每个方法在处理库文件时具有其特定特点和适用范围。System.load方法通过调用指定路径下的库文件实现加载过程。该库文件支持本地多种类型,不限于仅适用于JNI库。例如,在Windows操作系统中所示:
```java
System.load(C:\\Documents and Settings\\TestJNI.dll);
```
需要注意的是,此方法不会自动从`java.library.path`目录中搜索路径,因此必须提供完整的库文件路径。此外,若目标库依赖其他动态链接库,则这些外部依赖项需在调用`System.load`之前通过相同方式加载完毕或确保其位于可寻址位置。`System.loadLibrary`方法则不同,它仅需库文件的基本名称而不包含扩展名,如在Java环境中示例所示:
```java
System.loadLibrary(TestJNI);
```
此处,TestJNI无扩展名。 Java运行时会自动识别并添加相应操作系统特有的扩展名(例如,在Windows中为.dll,在Linux中为.so),随后会检查`java.library.path`环境变量所指定的路径列表中的某个目录。这意味着TestJNI对应的文件如TestJNI.dll必须位于上述任一指定目录下,或者与Java程序的应用路径相关联的类加载元路径内。当库文件包含依赖项时,System.loadLibrary方法将尝试在预先定义好的路径中查找这些依赖项所在的位置,并将其放置于这些可搜索位置中的一个即可满足调用需求。应对措施:针对依赖问题进行有效管理的具体方式。当我们调用`System.load`方法来加载一个类时,如果该类与其它类共享资源,则无需将这些依赖性预先处理,它们会在运行时被自动识别并加载。使用`System.loadLibrary`方法时,仅需确保所有相关类路径包含相应的资源即可。`java.library.path`属性可通过调用`System.getProperty(java.library.path)`方法获取其值。该属性的默认值因操作系统而异,在多数情况下会包含与JRE相关联的目录结构、当前工作目录以及系统根目录等。用户还可以在配置应用程序运行参数时指定该属性值以实现个性化设置。
`System.load`提供了更多控制权,适用于需要特定库加载情况的应用场景;而`System.loadLibrary`则更为简便,在大多数常规本地库加载任务中表现优异。根据具体的应用场景以及对库加载灵活性的要求来决定使用哪种方法。
全部评论 (0)


