- Java.lang包类
- Java.lang - 首页
- Java.lang - Boolean
- Java.lang - Byte
- Java.lang - Character
- Java.lang - Character.Subset
- Java.lang - Character.UnicodeBlock
- Java.lang - Class
- Java.lang - ClassLoader
- Java.lang - Compiler
- Java.lang - Double
- Java.lang - Enum
- Java.lang - Float
- Java.lang - InheritableThreadLocal
- Java.lang - Integer
- Java.lang - Long
- Java.lang - Math
- Java.lang - Number
- Java.lang - Object
- Java.lang - Package
- Java.lang - Process
- Java.lang - ProcessBuilder
- Java.lang - Runtime
- Java.lang - RuntimePermission
- Java.lang - SecurityManager
- Java.lang - Short
- Java.lang - StackTraceElement
- Java.lang - StrictMath
- Java.lang - String
- Java.lang - StringBuffer
- Java.lang - StringBuilder
- Java.lang - System
- Java.lang - Thread
- Java.lang - ThreadGroup
- Java.lang - ThreadLocal
- Java.lang - Throwable
- Java.lang - Void
- Java.lang包附加内容
- Java.lang - 接口
- Java.lang - 错误
- Java.lang - 异常
- Java.lang包有用资源
- Java.lang - 有用资源
- Java.lang - 讨论
Java运行时loadLibrary()方法
描述
Java Runtime loadLibrary(String filename) 方法加载具有指定库名称的动态库。包含本地代码的文件从本地文件系统中加载,该系统通常用于获取库文件。此过程的细节取决于实现。库名称与特定文件名之间的映射以系统特定的方式完成。
首先,如果存在安全管理器,则其checkLink方法将使用libname作为参数调用。这可能会导致安全异常。System.loadLibrary(String)方法是调用此方法的常规且便捷的方法。如果要在类的实现中使用本地方法,则标准策略是将本地代码放在库文件(称为LibFile)中,然后放置一个静态初始化器:
static { System.loadLibrary("LibFile"); }
在类声明中。当加载和初始化类时,本地方法的必要本地代码实现也将被加载。如果使用相同的库名称多次调用此方法,则第二次及后续调用将被忽略。
声明
以下是java.lang.Runtime.loadLibrary()方法的声明
public void loadLibrary(String libname)
参数
libname − 库的名称。
返回值
此方法不返回值。
异常
SecurityException − 如果存在安全管理器并且其checkLink方法不允许加载指定的动态库
UnsatisfiedLinkError − 如果库不存在
NullPointerException − 如果libname为null
示例:加载JDK库路径中存在的JAAS DLL
以下示例演示了Java Runtime load()方法的使用。在这个程序中,我们使用load()方法传递jaas.dll的相对路径来加载它,并打印相应的讯息。
package com.tutorialspoint;
public class RuntimeDemo {
public static void main(String[] args) {
// print when the program starts
System.out.println("Program starting...");
// load a library that is in Java Library Path
System.out.println("Loading Library...");
Runtime.getRuntime().loadLibrary("jaas");
System.out.println("Library Loaded.");
}
}
输出
让我们编译并运行上述程序,这将产生以下结果:
Program starting... Loading Library... Library Loaded.
示例:加载DLL时的异常
以下示例演示了Java Runtime load()方法的使用。在这个程序中,我们使用load()方法传递不存在的dll的路径来加载它,并打印相应的异常讯息。
package com.tutorialspoint;
public class RuntimeDemo {
public static void main(String[] args) {
// print when the program starts
System.out.println("Program starting...");
// load a library that is Windows/System32 folder
System.out.println("Loading Library...");
Runtime.getRuntime().loadLibrary("C:/Windows/System32/crypt32.dll");
System.out.println("Library Loaded.");
}
}
输出
让我们编译并运行上述程序,这将产生以下结果:
Program starting... Loading Library... Exception in thread "main" java.lang.UnsatisfiedLinkError: no C:/Windows/System32/crypt32.dll in java.library.path: C:\Program Files\Java\jdk-21\bin;;. at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2458) at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:916) at java.base/java.lang.Runtime.loadLibrary(Runtime.java:903) at com.tutorialspoint.RuntimeDemo.main(RuntimeDemo.java:12)
示例:加载EXTNET DLL
以下示例演示了Java Runtime load()方法的使用。在这个程序中,我们使用load()方法传递extnet.dll的相对路径来加载它,并打印相应的讯息。
package com.tutorialspoint;
public class RuntimeDemo {
public static void main(String[] args) {
// print when the program starts
System.out.println("Program starting...");
// load a library that is in Java Library Path
System.out.println("Loading Library...");
Runtime.getRuntime().loadLibrary("extnet");
System.out.println("Library Loaded.");
}
}
输出
让我们编译并运行上述程序,这将产生以下结果:
Program starting... Loading Library... Library Loaded.