2010-07-29 63 views
2

我嘗試加載一個屬性文件是這裏閱讀資源正確地在Eclipse中使用Java

<project>/resource/text/translation_en.properties 

用下面的代碼(在靜態情況下,沒有對象從我初始化現在):

<This_Classes_name>.class.getResourceAsStream("/resource/text/translation_en.properties"); 

爲什麼要這樣加載?首先,我使用類Object,因爲getResourceAsStream()不是靜態的,我通過使用google搜索瞭解到我應該使用此方法來加載我的屬性文件。然後,我使用/ Java看起來不相對於我的Main.java,但項目。儘管如此,我仍然無法使用它。

如果在這個確切的地方有一個文件,這怎麼能工作? Java在這裏做什麼?

回答

2

資源需要在Classpath中。一種選擇是將整個/資源文件夾複製到源文件夾中。另一種選擇是創建一個僅包含資源的新源文件夾並將該資源文件夾移動到那裏。除非你想使用getResourceAsStream("/text/translation_en.properties");

1

的getResourceAsStream被使用,因爲它可以讀取從整個類路徑的文件(包括JAR文件的文件,其是在類路徑)

我認爲方法將文件名作爲參數而沒有任何路徑,在你的例子類加載器會查找名爲「/resource/text/translation_en.properties」的文件,而不是將第一部分解釋爲路徑。 試裝車這樣的:

this.getClass().getClassLoader().getResourceAsStream("translation_en.properties"); 

此外youll必須確保該文件實際上是在類路徑中。使用maven和eclipse時,應該有一個文件夾「目標」,其中包含所有生成的類。當該項目在eclipse中運行時,該文件夾將被添加到類路徑中。

希望幫助....

+0

小錯字:'this.getClass' - >'this.getClass()' – wlk 2012-02-13 13:45:19

+0

@Wojtek:fixed that,thx。 – fasseg 2012-02-13 14:11:06