2010-12-11 148 views
0

在我的項目中,我使用運行jar文件時出現Java FileNotFoundException

加載我的資源
getClass().getResource("/package/my_reource.file").getFile() 

當我在netbeans中運行項目時,一切正常,但是如果我運行jar文件,我得到FileNotFoundException,爲什麼?

謝謝。

回答

1

我不認爲你需要文件名。你更需要它的內容。因此請使用getResourceAsStream()獲取InputStream並從那裏讀取內容。

+0

getFile()以String而不是文件的形式返回文件名。 ;) – 2010-12-11 12:41:56

+0

感謝彼得提醒我:)。更新。 – Bozho 2010-12-11 12:44:57

+0

我知道,我嘗試過使用getResourceAsStrem並且strem爲空。無論如何,我必須填寫一個碧玉報告文件,所以一個字符串路徑就足夠了。 JasperFillManager.fillReport – blow 2010-12-11 13:08:54

0

檢查你的jar。我相信你的文件不在那裏。 原因取決於你如何創建你的jar。如果你使用netbeans來做,請檢查你的設置。可能它只包含* .class文件?同樣是關於螞蟻。檢查標籤。

+0

謝謝,但該文件已放入jar包中! – blow 2010-12-11 12:37:33

0

getFile()返回由getResource()返回的URL的文件路徑部分() 因此,如果它在Jar中,您必須閱讀jar來獲取他的文件。如果它在文件系統上可以使用FileInputStream讀取。

如果你想獲得的InputStream和你沒有創建你來自哪裏使用的getResourceAsStream()

2

您可以使用InputStream,而不是getClass().getResource("/package/my_reource.file").getFile()

得到它應使用

getClass.getResourceAsStream("/package/myresource.file") 
相關問題