首頁  >  文章  >  Java  >  為什麼從命令列運行時 getClass().getResource() 失敗?

為什麼從命令列運行時 getClass().getResource() 失敗?

DDD
DDD原創
2024-11-07 00:50:03684瀏覽

Why Does getClass().getResource() Fail When Running from the Command Line?

透過 getClass().getResource() 載入檔案

可以使用 getClass().getResource() 方法來載入資源檔案。當從 Eclipse 等開發環境部署時,此方法通常可以無縫運行。但是,從命令列運行應用程式有時會導致空指標異常。

出現此問題的原因是 getClass().getResource() 使用類別載入器來擷取資源。為了可訪問,資源必須包含在類別路徑中。使用 Eclipse 時,來源資料夾及其所有元件(包括資源檔案)預設放置在類別路徑中。因此,可以從與類別相同的套件或目錄中載入資源。

相反,從命令列執行時,不會自動配置類別路徑。包含資源的檔案或目錄必須明確新增到類別路徑中。實現此目的的一種方法是將 CLASSPATH 環境變數設定為檔案或目錄的路徑。

要注意的是,不建議直接使用程式碼中所示的 FileInputStream 來載入資源。相反,使用 getResourceAsStream() 來取得 InputStream。這確保了部署為 JAR 檔案或透過網路載入類別時的相容性。

此外, getResource() 方法可讓您指定資源相對於類別包的位置。例如:

Foo.class.getResourceAsStream("Test.properties")

從與 Foo 相同的套件中載入 Test.properties。

Foo.class.getResourceAsStream("/com/foo/bar/Test.properties")

從 com.foo.bar 套件載入 Test.properties。

遵守這些準則,您可以在從命令列執行應用程式時使用 getClass().getResource() 成功載入資源檔案。

以上是為什麼從命令列運行時 getClass().getResource() 失敗?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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