2016-05-01 22 views
0

我在eclipse中做了一個maven web-app項目,它在我所做的這個機器上正常工作。但在Eclipse中導入此項目到其他機器時,它給了我這個例外在獲取文件:無法獲取文件使用classLoader.getResource(fileName).getFile()

例外:d:\的Eclipse%20Workspace.metadata.plugins \ org.eclipse.wst.server.core \ TMP0 \ wtpwebapps \例子\ WEB-INF \類\ file.txt的 (系統找不到指定的路徑)

我使用此代碼來獲取文件:

public File getFile (String fileName) { 
    //Get file from resources folder 
    ClassLoader classLoader = getClass().getClassLoader(); 
    File file = new File(classLoader.getResource(fileName).getFile()); 
    return file; 
} 

該文件在項目的資源文件夾中:

d:\ Eclipse工作區\情感分析\實例的\ src \主\資源

我走的路徑顯示異常消息,發現文件已經去過那裏。

回答

0

代碼正在尋找與此代碼類駐留在同一目錄中的文件。這段代碼的包結構是什麼? 此外,只有Maven將資源複製到類路徑中。因此,如果您使用Eclipse進行編譯和運行,那麼資源文件夾將不會自動複製。

1

getFile URL的方法不是將URL轉換爲文件。它只是在主機和端口之後返回URL的一部分。 URL需要百分比轉義許多字符(包括空格),因此無法可靠地將URL的路徑部分用作文件名。實際上,例外是告訴你:計算機上沒有名爲D:\Eclipse%20Workspace.metadata.plugins的目錄。 (請繼續檢查。)

當您有URL時,您不應該嘗試將其轉換爲文件。你不需要。您可以使用URL的openStream method從網址中輕鬆地讀取網址。

但是,即使是沒有必要的,因爲你也可以使用的getResourceAsStream方法來完全跳過網址,並得到一個可讀的InputStream:

InputStream stream = getClass().getResourceAsStream("/file.txt"); 
相關問題