2013-05-20 63 views
0
URL root = Thread.currentThread().getContextClassLoader().getResource(packageName.replace(".", "/")); 

我使用上面的語句來訪問給定包名的.class文件。但在某些情況下,我需要訪問文件\ build \ test \ classes而不是\ build \ classes。我如何修改上述說明?使用類加載器訪問不同的文件夾

+1

您需要更改您的運行時類路徑以包含測試資源,java代碼保持不變 – hoaz

+0

我想在代碼中執行此操作,因爲這兩種情況都是可行的。 – cooltoad

+0

類加載器無法加載不在其類路徑中的內容。 –

回答

1

您的類路徑存在問題。 ${project}/build/test/classes${project}/build/classes文件夾建議您使用Ant來編譯代碼,或在Eclipse的「新Java項目」對話框中選中「允許源文件夾的輸出文件夾」選項。

你應該配置你項目編譯所有源文件到相同的輸出文件夾,在你的情況/build/classes

如果使用類加載器加載資源,那麼即使它以/開頭,您爲其提供的路徑對於整個文件系統也不是絕對的。

InputStream is = this.getClass().getResourceAsStream("/some/resource"); 

這實際上是指找到這個文件${project}/build/classes/some/resource。 爲了在目標位置獲取資源,最簡單的方法是將其放置在${project}/src/some/resource中。

雖然你應該考慮使用Maven和m2eclipse,如果你使用Eclipse。

相關問題