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