首頁 >Java >java教程 >從 JAR 載入資源時,為什麼 getResourceAsStream 傳回 Null,如何修復?

從 JAR 載入資源時,為什麼 getResourceAsStream 傳回 Null,如何修復?

Barbara Streisand
Barbara Streisand原創
2024-12-20 07:59:10378瀏覽

Why Does getResourceAsStream Return Null When Loading Resources from a JAR, and How Can I Fix It?

解決從JAR 載入資源時的「getResourceAsStream 傳回Null」問題

嘗試從編譯的JAR 中的套件載入文字檔時, getResourceAsStream 方法可能會傳回null,這讓開發人員感到困惑。本文深入研究了該問題並提供了解決方案。

最初嘗試使用 Class::getResourceAsStream 和各種參數載入檔案都會導致列印 null。這種意外行為是由於 Class::getResourceAsStream(...) 方法使用的系統類別載入器無法辨識 JAR,因此無法存取 JAR 檔案中的資源。

要解決此問題,需要使用能夠存取 JAR 中資源的適當類別載入器。在Java中,每個類別都由一個類別載入器加載,載入Lifepaths類別的類別載入器將有權存取JAR中的資源。因此,正確的載入檔案的方法是直接使用Class::getResourceAsStream() 方法,如下所示:

public static InputStream loadResource() {
    return Lifepaths.class.getResourceAsStream("/initialization/Lifepaths.txt");
}

注意,當呼叫getResourceAsStream(name) 時,名稱必須以「/」開頭」。這確保了資源是從類別路徑的根加載的,對於類別載入器正確定位檔案至關重要。

以上是從 JAR 載入資源時,為什麼 getResourceAsStream 傳回 Null,如何修復?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn