我有代碼以下行:
InputStream passoloExportFileInputStream = getClass().getClassLoader().getResourceAsStream("/com/thinkplexx/lang/de/general.xml");
,我知道與COM/thinkplexx /郎/德/ general.xml這罐子是在類路徑中。
它工作在「以前的環境」,這是maven2構建。
現在,我評估maven3,它不工作!我知道,如果我改變的代碼是:
InputStream passoloExportFileInputStream = getClass().getClassLoader().getResourceAsStream("com/thinkplexx/lang/de/general.xml");
它的偉大工程(我只是刪除從資源路徑的第一個斜槓)。
順便說一句,我使用Linux。路徑中的第一個斜槓通常意味着「從根目錄」,所以如果這個邏輯對於Java資源加載也是合理的,那麼第一個例子應該從來沒有工作過!
問題:第一個代碼示例有問題,即/com/而不是com/?它只是不好的代碼,或者它意味着不同的東西?
謝謝!
德文斯的答案適合我。另外,我在 http://download.oracle.com/docs/cd/E17476_01/javase/1.5.0/docs/guide/lang/resources.html發現: 「 ClassLoader中的方法使用給定的String作爲資源的名稱,而不應用任何絕對/相對轉換(請參見Class中的方法)。名稱不應包含前導「/」 「 – 2010-07-13 16:11:34