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

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

Barbara Streisand
發布: 2024-12-20 07:59:10
原創
335 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板