- 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.