新聞中心
Runtime

java.lang.Object
|---java.lang.Runtime
public class Runtime
extends Object
每個 Java 應用程序都有一個 Runtime 類的實例,它允許應用程序與運行應用程序的環(huán)境進行交互。 當前運行時可以從 getRuntime 方法中獲取。
應用程序無法創(chuàng)建自己的此類實例。
方法總結
| 修飾符和類型 | 方法 | 描述 |
|---|---|---|
| void | addShutdownHook(Thread hook) | 注冊一個新的虛擬機關閉掛鉤。 |
| int | availableProcessors() | 返回 Java 虛擬機可用的處理器數(shù)量。 |
| Process | exec(String command) | 在單獨的進程中執(zhí)行指定的字符串命令。 |
| Process | exec(String[] cmdarray) | 在單獨的進程中執(zhí)行指定的命令和參數(shù)。 |
| Process | exec(String[] cmdarray, String[] envp) | 在具有指定環(huán)境的單獨進程中執(zhí)行指定的命令和參數(shù)。 |
| Process | exec(String[] cmdarray, String[] envp, File dir) | 在具有指定環(huán)境和工作目錄的單獨進程中執(zhí)行指定的命令和參數(shù)。 |
| Process | exec(String command, String[] envp) | 在具有指定環(huán)境的單獨進程中執(zhí)行指定的字符串命令。 |
| Process | exec(String command, String[] envp, File dir) | 在具有指定環(huán)境和工作目錄的單獨進程中執(zhí)行指定的字符串命令。 |
| void | exit(int status) | 通過啟動其關閉序列來終止當前正在運行的 Java 虛擬機。 |
| long | freeMemory() | 返回 Java 虛擬機中的可用內(nèi)存量。 |
| void | gc() | 運行垃圾收集器。 |
| InputStream | getLocalizedInputStream(InputStream in) | 已棄用。 從 JDK 1.1 開始,將本地編碼中的字節(jié)流轉換為 Unicode 中的字符流的首選方法是通過 InputStreamReader 和 BufferedReader 類。 |
| OutputStream | getLocalizedOutputStream(OutputStream out) | 已棄用。 從 JDK 1.1 開始,將 Unicode 字符流轉換為本地編碼的字節(jié)流的首選方法是通過 OutputStreamWriter、BufferedWriter 和 PrintWriter 類。 |
| static Runtime | getRuntime() | 返回與當前 Java 應用程序關聯(lián)的運行時對象。 |
| void | halt(int status) | 強制終止當前運行的 Java 虛擬機。 |
| void | load(String filename) | 加載由文件名參數(shù)指定的本機庫。 |
| void | loadLibrary(String libname) | 加載由 libname 參數(shù)指定的本機庫。 |
| long | maxMemory() | 返回 Java 虛擬機將嘗試使用的最大內(nèi)存量。 |
| boolean | removeShutdownHook(Thread hook) | 取消注冊以前注冊的虛擬機關閉掛鉤。 |
| void | runFinalization() | 運行任何等待終結的對象的終結方法。 |
| static void | runFinalizersOnExit(boolean value) | 已棄用。 這種方法本質(zhì)上是不安全的。 這可能會導致在其他線程同時操作這些對象時對活動對象調(diào)用終結器,從而導致行為不穩(wěn)定或死鎖。 |
| long | totalMemory() | 返回 Java 虛擬機中的內(nèi)存總量。 |
| void | traceInstructions(boolean on) | 啟用/禁用指令跟蹤。 |
| void | traceMethodCalls(boolean on) | 啟用/禁用方法調(diào)用的跟蹤。 |
| 從類 java.lang.Object 繼承的方法 |
|---|
| clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
方法詳情
getRuntime
public static Runtime getRuntime()
返回與當前 Java 應用程序關聯(lián)的運行時對象。 Runtime 類的大部分方法都是實例方法,必須針對當前運行時對象調(diào)用。
返回:
與當前 Java 應用程序關聯(lián)的運行時對象。
exit
public void exit(int status)
通過啟動其關閉序列來終止當前正在運行的 Java 虛擬機。此方法永遠不會正常返回。該參數(shù)用作狀態(tài)碼;按照慣例,非零狀態(tài)碼表示異常終止。
虛擬機的關閉順序包括兩個階段。在第一階段,所有已注冊的關閉掛鉤(如果有)都以某種未指定的順序啟動,并允許同時運行直到它們完成。在第二階段,如果 finalization-on-exit 已啟用,則所有未調(diào)用的終結器都會運行。完成此操作后,虛擬機將停止。
如果在虛擬機開始其關閉序列之后調(diào)用此方法,則如果正在運行關閉掛鉤,則此方法將無限期阻塞。如果已經(jīng)運行了關閉掛鉤并且已啟用退出終止,則此方法會在狀態(tài)非零時使用給定的狀態(tài)代碼暫停虛擬機;否則,它會無限期地阻塞。
System#exit(int) 方法是調(diào)用此方法的常規(guī)且方便的方法。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| status | 終止狀態(tài)。 按照慣例,非零狀態(tài)碼表示異常終止。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果存在安全管理器并且其 SecurityManager#checkExit 方法不允許以指定狀態(tài)退出 |
addShutdownHook
public void addShutdownHook(Thread hook)
注冊一個新的虛擬機關閉掛鉤。
Java 虛擬機關閉以響應兩種事件:
- 程序正常退出,當最后一個非守護線程退出或調(diào)用 exit(等效于 System#exit(int))方法時,或
- 虛擬機響應用戶中斷(例如鍵入 ^C)或系統(tǒng)范圍的事件(例如用戶注銷或系統(tǒng)關閉)而終止。
關閉掛鉤只是一個已初始化但未啟動的線程。當虛擬機開始其關閉序列時,它將以某種未指定的順序啟動所有已注冊的關閉掛鉤并讓它們同時運行。當所有鉤子都完成后,如果 finalization-on-exit 已啟用,它將運行所有未調(diào)用的終結器。最后,虛擬機將停止。請注意,在關閉序列期間,守護線程將繼續(xù)運行,如果通過調(diào)用 exit 方法啟動關閉,非守護線程也將繼續(xù)運行。
一旦關閉序列開始,它只能通過調(diào)用halt方法來停止,該方法會強制終止虛擬機。
一旦關閉序列開始,就不可能注冊新的關閉掛鉤或取消注冊先前注冊的掛鉤。嘗試這些操作中的任何一個都將導致拋出 IllegalStateException。
關閉掛鉤在虛擬機生命周期的一個微妙時刻運行,因此應該進行防御性編碼。特別是,它們應該寫成線程安全的,并盡可能避免死鎖。他們也不應該盲目依賴可能已經(jīng)注冊了自己的關閉鉤子的服務,因此他們自己可能正在關閉的過程中。例如,嘗試使用其他基于線程的服務(例如 AWT 事件調(diào)度線程)可能會導致死鎖。
關閉掛鉤也應該快速完成它們的工作。當程序調(diào)用 exit 時,期望虛擬機將立即關閉并退出。當虛擬機由于用戶注銷或系統(tǒng)關閉而終止時,底層操作系統(tǒng)可能只允許關閉和退出的固定時間量。因此,不建議嘗試任何用戶交互或在關閉掛鉤中執(zhí)行長時間運行的計算。
與在任何其他線程中一樣,通過調(diào)用線程的 ThreadGroup 對象的 ThreadGroup#uncaughtException 方法,在關閉掛鉤中處理未捕獲的異常。此方法的默認實現(xiàn)將異常的堆棧跟蹤打印到 System#err 并終止線程;它不會導致虛擬機退出或停止。
在極少數(shù)情況下,虛擬機可能會中止,即在沒有完全關閉的情況下停止運行。當虛擬機在外部終止時會發(fā)生這種情況,例如在 Unix 上使用 SIGKILL 信號或在 Microsoft Windows 上使用 TerminateProcess 調(diào)用。如果本地方法出錯,例如破壞內(nèi)部數(shù)據(jù)結構或嘗試訪問不存在的內(nèi)存,虛擬機也可能中止。如果虛擬機中止,則無法保證是否會運行任何關閉掛鉤。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| hook | 一個已初始化但未啟動的 Thread 對象 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| IllegalArgumentException | 如果指定的鉤子已經(jīng)注冊,或者是否可以確定鉤子已經(jīng)運行或者已經(jīng)運行 |
| IllegalStateException | 如果虛擬機已經(jīng)處于關閉過程中 |
| SecurityException | 如果存在安全管理器并且它拒絕 RuntimePermission("shutdownHooks") |
removeShutdownHook
public boolean removeShutdownHook(Thread hook)
取消注冊以前注冊的虛擬機關閉掛鉤。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| hook | 要移除的鉤子 |
返回:
如果指定的鉤子先前已注冊并成功取消注冊,則為 true,否則為 false。
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| IllegalStateException | 如果虛擬機已經(jīng)處于關閉過程中 |
| SecurityException | 如果存在安全管理器并且它拒絕 RuntimePermission("shutdownHooks") |
halt
public void halt(int status)
強制終止當前運行的 Java 虛擬機。 此方法永遠不會正常返回。
使用此方法時應格外小心。 與 exit 方法不同,如果 finalization-on-exit 已啟用,此方法不會導致關閉掛鉤啟動并且不會運行未調(diào)用的終結器。 如果已啟動關閉序列,則此方法不會等待任何正在運行的關閉掛鉤或終結器完成其工作。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| status | 終止狀態(tài)。 按照慣例,非零狀態(tài)碼表示異常終止。 如果 Runtime#exit(等效于 System#exit(int))方法已被調(diào)用,則此狀態(tài)代碼將覆蓋傳遞給該方法的狀態(tài)代碼。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果存在安全管理器并且其 SecurityManager#checkExit 方法不允許以指定狀態(tài)退出 |
runFinalizersOnExit
@Deprecated public static void runFinalizersOnExit(boolean value)
已棄用。 這種方法本質(zhì)上是不安全的。 這可能會導致在其他線程同時操作這些對象時對活動對象調(diào)用終結器,從而導致行為不穩(wěn)定或死鎖。
在退出時啟用或禁用終結; 這樣做指定在 Java 運行時退出之前運行具有尚未自動調(diào)用的終結器的所有對象的終結器。 默認情況下,退出時的最終確定是禁用的。
如果存在安全管理器,則首先調(diào)用其 checkExit 方法,并以 0 作為其參數(shù),以確保允許退出。 這可能會導致 SecurityException。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| value | true 在退出時啟用最終確定,false 禁用 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果存在安全管理器并且其 checkExit 方法不允許退出。 |
exec
public Process exec(String command) throws IOException
在單獨的進程中執(zhí)行指定的字符串命令。
這是一種方便的方法。 調(diào)用 exec(command) 形式的行為與調(diào)用 exec(command, null, null) 完全相同。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| command | 指定的系統(tǒng)命令。 |
返回:
用于管理子流程的新流程對象
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果存在安全管理器并且其 SecurityManager#checkExec 方法不允許創(chuàng)建子進程 |
| IOException | 如果發(fā)生 I/O 錯誤 |
| NullPointerException | 如果命令為 null |
| IllegalArgumentException | 如果命令為empty |
exec
public Process exec(String command, String[] envp) throws IOException
在具有指定環(huán)境的單獨進程中執(zhí)行指定的字符串命令。
這是一種方便的方法。 exec(command, envp) 形式的調(diào)用與調(diào)用 exec(command, envp, null) 的行為方式完全相同。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| command | 指定的系統(tǒng)命令。 |
| envp | 字符串數(shù)組,其中每個元素都具有格式 name=value 的環(huán)境變量設置,如果子進程應繼承當前進程的環(huán)境,則為 null。 |
返回:
用于管理子流程的新流程對象
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果存在安全管理器并且其 SecurityManager#checkExec 方法不允許創(chuàng)建子進程 |
| IOException | 如果發(fā)生 I/O 錯誤 |
| NullPointerException | 如果 command 為 null,或者 envp 的元素之一為 null |
| IllegalArgumentException | 如果命令為empty |
exec
public Process exec(String command, String[] envp, File dir) throws IOException
在具有指定環(huán)境和工作目錄的單獨進程中執(zhí)行指定的字符串命令。
這是一種方便的方法。 exec(command, envp, dir) 形式的調(diào)用與調(diào)用 exec(cmdarray, envp, dir) 的行為方式完全相同,其中 cmdarray 是命令中所有標記的數(shù)組。
更準確地說,使用由調(diào)用 new StringTokenizer(command) 創(chuàng)建的 StringTokenizer 將命令字符串分解為標記,而無需進一步修改字符類別。 標記器生成的標記然后以相同的順序放置在新的字符串數(shù)組 cmdarray 中。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| command | 指定的系統(tǒng)命令。 |
| envp | 字符串數(shù)組,其中每個元素都具有格式 name=value 的環(huán)境變量設置,如果子進程應繼承當前進程的環(huán)境,則為 null。 |
| dir | 子進程的工作目錄,如果子進程應該繼承當前進程的工作目錄,則返回 null。 |
返回:
用于管理子流程的新流程對象
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果存在安全管理器并且其 SecurityManager#checkExec 方法不允許創(chuàng)建子進程 |
| IOException | 如果發(fā)生 I/O 錯誤 |
| NullPointerException | 如果 command 為 null,或者 envp 的元素之一為 null |
| IllegalArgumentException | 如果命令為empty |
exec
public Process exec(String[] cmdarray) throws IOException
在單獨的進程中執(zhí)行指定的命令和參數(shù)。
這是一種方便的方法。 exec(cmdarray) 形式的調(diào)用與調(diào)用 exec(cmdarray, null, null) 的行為方式完全相同。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| cmdarray | 包含要調(diào)用的命令及其參數(shù)的數(shù)組。 |
返回:
用于管理子流程的新流程對象
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果存在安全管理器并且其 SecurityManager#checkExec 方法不允許創(chuàng)建子進程 |
| IOException | 如果發(fā)生 I/O 錯誤 |
| NullPointerException | 如果 cmdarray 為 null,或者 cmdarray 的元素之一為 null |
| IndexOutOfBoundsException | 如果 cmdarray 是一個空數(shù)組(長度為 0) |
exec
public Process exec(String[] cmdarray, String[] envp) throws IOException
在具有指定環(huán)境的單獨進程中執(zhí)行指定的命令和參數(shù)。
這是一種方便的方法。 exec(cmdarray, envp) 形式的調(diào)用與調(diào)用 exec(cmdarray, envp, null) 的行為方式完全相同。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| cmdarray | 包含要調(diào)用的命令及其參數(shù)的數(shù)組。 |
| envp | 字符串數(shù)組,其中每個元素都具有格式 name=value 的環(huán)境變量設置,如果子進程應繼承當前進程的環(huán)境,則為 null。 |
返回:
用于管理子流程的新流程對象
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果存在安全管理器并且其 SecurityManager#checkExec 方法不允許創(chuàng)建子進程 |
| IOException | 如果發(fā)生 I/O 錯誤 |
| NullPointerException | 如果 cmdarray 為 null,或者 cmdarray 的元素之一為 null,或者 envp 的元素之一為 null |
| IndexOutOfBoundsException | 如果 cmdarray 是一個空數(shù)組(長度為 0) |
exec
public Process exec(String[] cmdarray, String[] envp, File dir) throws IOException
在具有指定環(huán)境和工作目錄的單獨進程中執(zhí)行指定的命令和參數(shù)。
給定一個字符串數(shù)組 cmdarray,表示命令行的標記,和一個字符串數(shù)組 envp,表示“環(huán)境”變量設置,這個方法創(chuàng)建一個新進程來執(zhí)行指定的命令。
此方法檢查 cmdarray 是否為有效的操作系統(tǒng)命令。哪些命令有效取決于系統(tǒng),但至少該命令必須是非空字符串的非空列表。
如果 envp 為 null,則子進程繼承當前進程的環(huán)境設置。
在某些操作系統(tǒng)上啟動進程可能需要一組最小的系統(tǒng)相關環(huán)境變量。因此,子進程可能會繼承指定環(huán)境之外的其他環(huán)境變量設置。
ProcessBuilder#start() 現(xiàn)在是使用修改后的環(huán)境啟動進程的首選方式。
新子進程的工作目錄由 dir 指定。如果 dir 為 null,則子進程繼承當前進程的當前工作目錄。
如果存在安全管理器,則使用數(shù)組 cmdarray 的第一個組件作為其參數(shù)調(diào)用其 SecurityManager#checkExec 方法。這可能會導致拋出 SecurityException。
啟動操作系統(tǒng)進程高度依賴于系統(tǒng)??赡艹鲥e的許多事情包括:
- 找不到操作系統(tǒng)程序文件。
- 訪問程序文件被拒絕。
- 工作目錄不存在。
在這種情況下會拋出異常。 異常的確切性質(zhì)取決于系統(tǒng),但它始終是 IOException 的子類。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| cmdarray | 包含要調(diào)用的命令及其參數(shù)的數(shù)組。 |
| envp | 字符串數(shù)組,其中每個元素的環(huán)境變量設置格式為 name=value,如果子進程應繼承當前進程的環(huán)境,則為 null。 |
| dir | 子進程的工作目錄,如果子進程應該繼承當前進程的工作目錄,則返回 null。 |
返回:
用于管理子流程的新流程對象
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果存在安全管理器并且其 SecurityManager#checkExec 方法不允許創(chuàng)建子進程 |
| IOException | 如果發(fā)生 I/O 錯誤 |
| NullPointerException | 如果 cmdarray 為 null,或者 cmdarray 的元素之一為 null,或者 envp 的元素之一為 null |
| IndexOutOfBoundsException | 如果 cmdarray 是一個空數(shù)組(長度為 0) |
availableProcessors
public int availableProcessors()
返回 Java 虛擬機可用的處理器數(shù)量。
此值可能會在虛擬機的特定調(diào)用期間發(fā)生變化。 因此,對可用處理器數(shù)量敏感的應用程序應偶爾輪詢此屬性并適當調(diào)整其資源使用情況。
返回:
虛擬機可用的最大處理器數(shù)量; 從不小于一
freeMemory
public long freeMemory()
返回 Java 虛擬機中的可用內(nèi)存量。 調(diào)用 gc 方法可能會導致 freeMemory 返回的值增加。
返回:
當前可用于未來分配的對象的內(nèi)存總量的近似值,以字節(jié)為單位。
totalMemory
public long totalMemory()
返回 Java 虛擬機中的內(nèi)存總量。 此方法返回的值可能會隨時間變化,具體取決于主機環(huán)境。
請注意,保存任何給定類型的對象所需的內(nèi)存量可能取決于實現(xiàn)。
返回:
當前可用于當前和未來對象的內(nèi)存總量,以字節(jié)為單位。
maxMemory
public long maxMemory()
返回 Java 虛擬機將嘗試使用的最大內(nèi)存量。 如果沒有固有限制,則返回 Long.MAX_VALUE 值。
返回:
虛擬機將嘗試使用的最大內(nèi)存量,以字節(jié)為單位
gc
public void gc()
運行垃圾收集器。 調(diào)用此方法表明 Java 虛擬機花費精力回收未使用的對象,以使它們當前占用的內(nèi)存可用于快速重用。 當控制從方法調(diào)用返回時,虛擬機已盡最大努力回收所有丟棄的對象。
gc 這個名字代表“垃圾收集器”。 虛擬機根據(jù)需要在單獨的線程中自動執(zhí)行此回收過程,即使沒有顯式調(diào)用 gc 方法。
System#gc() 方法是調(diào)用此方法的常規(guī)且方便的方法。
runFinalization
public void runFinalization()
運行任何等待終結的對象的終結方法。 調(diào)用此方法表明 Java 虛擬機花費精力運行已發(fā)現(xiàn)已丟棄但尚未運行其 finalize 方法的對象的 finalize 方法。 當控制從方法調(diào)用返回時,虛擬機已盡最大努力完成所有未完成的終結。
如果未顯式調(diào)用 runFinalization 方法,則虛擬機會根據(jù)需要在單獨的線程中自動執(zhí)行終結過程。
System#runFinalization() 方法是調(diào)用此方法的常規(guī)且方便的方法。
traceInstructions
public void traceInstructions(boolean on)
啟用/禁用指令跟蹤。 如果布爾參數(shù)為真,則此方法建議 Java 虛擬機在執(zhí)行時為虛擬機中的每條指令發(fā)出調(diào)試信息。 此信息的格式以及將其發(fā)送到的文件或其他輸出流取決于主機環(huán)境。 如果虛擬機不支持此功能,它可能會忽略此請求。 跟蹤輸出的目的地取決于系統(tǒng)。
如果布爾參數(shù)為假,此方法會導致虛擬機停止執(zhí)行它正在執(zhí)行的詳細指令跟蹤。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| on | true 啟用指令跟蹤; false 禁用此功能。 |
traceMethodCalls
public void traceMethodCalls(boolean on)
啟用/禁用方法調(diào)用的跟蹤。 如果布爾參數(shù)為真,則此方法建議 Java 虛擬機在調(diào)用虛擬機時為虛擬機中的每個方法發(fā)出調(diào)試信息。 此信息的格式以及將其發(fā)送到的文件或其他輸出流取決于主機環(huán)境。 如果虛擬機不支持此功能,它可能會忽略此請求。
使用參數(shù) false 調(diào)用此方法表明虛擬機停止發(fā)出每次調(diào)用的調(diào)試信息。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| on | true 啟用指令跟蹤; false 禁用此功能。 |
load
public void load(String filename)
加載由文件名參數(shù)指定的本機庫。文件名參數(shù)必須是絕對路徑名。 (例如 Runtime.getRuntime().load("/home/avh/lib/libX11.so");)。如果 filename 參數(shù)在去除任何特定于平臺的庫前綴、路徑和文件擴展名后,指示名稱為 L 的庫,并且名為 L 的本機庫與 VM 靜態(tài)鏈接,則 JNI_OnLoad_L 函數(shù)調(diào)用由庫導出的,而不是嘗試加載動態(tài)庫。與參數(shù)匹配的文件名不必存在于文件系統(tǒng)中。有關更多詳細信息,請參閱 JNI 規(guī)范。否則,文件名參數(shù)以與實現(xiàn)相關的方式映射到本機庫映像。
首先,如果有一個安全管理器,它的 checkLink 方法以文件名作為它的參數(shù)被調(diào)用。這可能會導致安全異常。
這類似于方法 loadLibrary(java.lang.String),但它接受一個通用文件名作為參數(shù),而不僅僅是一個庫名,允許加載任何本地代碼文件。
System#load(String) 方法是調(diào)用此方法的常規(guī)且方便的方法。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| filename | 要加載的文件。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果存在安全管理器并且其 checkLink 方法不允許加載指定的動態(tài)庫 |
| UnsatisfiedLinkError | 如果文件名不是絕對路徑名,則本機庫未與 VM 靜態(tài)鏈接,或者主機系統(tǒng)無法將庫映射到本機庫映像。 |
| NullPointerException | 如果文件名為空 |
loadLibrary
public void loadLibrary(String libname)
加載由 libname 參數(shù)指定的本機庫。 libname 參數(shù)不得包含任何特定于平臺的前綴、文件擴展名或路徑。 如果名為 libname 的本機庫與 VM 靜態(tài)鏈接,則調(diào)用該庫導出的 JNI_OnLoad_libname 函數(shù)。 有關更多詳細信息,請參閱 JNI 規(guī)范。 否則,libname 參數(shù)將從系統(tǒng)庫位置加載并以與實現(xiàn)相關的方式映射到本機庫映像。
首先,如果有一個安全管理器,它的 checkLink 方法會以 libname 作為參數(shù)調(diào)用。 這可能會導致安全異常。
System#loadLibrary(String) 方法是調(diào)用此方法的常規(guī)且方便的方法。 如果要在類的實現(xiàn)中使用本地方法,標準策略是將本地代碼放入庫文件(稱為 LibFile)中,然后放入靜態(tài)初始化程序:
static { System.loadLibrary("LibFile"); }
在類聲明中。 當類被加載和初始化時,本地方法的必要本地代碼實現(xiàn)也將被加載。
如果使用相同的庫名稱多次調(diào)用此方法,則忽略第二次和后續(xù)調(diào)用。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| libname | 庫的名稱。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果存在安全管理器并且其 checkLink 方法不允許加載指定的動態(tài)庫 |
| UnsatisfiedLinkError | 如果 libname 參數(shù)包含文件路徑,則本機庫未與 VM 靜態(tài)鏈接,或者該庫無法由主機系統(tǒng)映射到本機庫映像。 |
| NullPointerException | 如果 libname 為空 |
getLocalizedInputStream
@Deprecated public InputStream getLocalizedInputStream(InputStream in)
已棄用。 從 JDK 1.1 開始,將本地編碼中的字節(jié)流轉換為 Unicode 中的字符流的首選方法是通過 InputStreamReader 和 BufferedReader 類。
創(chuàng)建輸入流的本地化版本。 此方法接受一個 InputStream 并返回一個在所有方面都與參數(shù)等效的 InputStream,除了它是本地化的:當從流中讀取本地字符集中的字符時,它們會自動從本地字符集轉換為 Unicode。
如果參數(shù)已經(jīng)是本地化流,則可以將其作為結果返回。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| in | InputStream 進行本地化 |
返回:
本地化輸入流
getLocalizedOutputStream
@Deprecated public OutputStream getLocalizedOutputStream(OutputStream out)
已棄用。 從 JDK 1.1 開始,將 Unicode 字符流轉換為本地編碼的字節(jié)流的首選方法是通過 OutputStreamWriter、BufferedWriter 和 PrintWriter 類。
創(chuàng)建輸出流的本地化版本。 此方法接受一個 OutputStream 并返回一個在所有方面都與參數(shù)等效的 OutputStream,除了它是本地化的:當 Unicode 字符寫入流時,它們會自動轉換為本地字符集。
如果參數(shù)已經(jīng)是本地化流,則可以將其作為結果返回。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| out | OutputStream 進行本地化 |
返回:
本地化的輸出流
網(wǎng)頁名稱:創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OSRuntime
本文路徑:http://m.5511xx.com/article/djocgij.html


咨詢
建站咨詢
