2015-08-13 48 views
-1

我希望我的代碼能夠在直接從jar運行應用程序時獲取文件路徑(如字符串)。這是我嘗試如何在運行jar時從URL獲取路徑 - Java

URL url = LispConnector.class.getResource("/Aima/aima/quicklisp/setup.lisp"); 
String path = url.getFile(); 
File f = new File(path); 
path = f.getAbsolutePath(); 
path = path.replace("\\", "/"); 

雖然當我運行從NetBeans中的應用程序能正常工作,返回的absoulte路徑不正確,當我直接運行的jar文件。返回的路徑

enter image description here

當我使用的代碼

String path = url.toURI(); 
File = new File(path); 
path = path.getAbsolutePath(); 

它再次從NetBeans中運行時工作正常,但顯示錯誤,同時運行的jar文件「URI不分層」的錯誤。

我的問題是,如何從jar中直接運行應用程序時獲取文件的絕對路徑。 我不想讀取文件的內容,我只需要將absoulte路徑作爲字符串!

+1

不要嘗試使用文件路徑訪問JAR中的資源。由於它們在JAR文件中,因此它們不是文件系統的一部分(因此無法使用文件路徑訪問)。只需使用'getResourceAsStream(..)'檢索InputStream,然後從InputStream中讀取數據。 – Robert

+0

我不想讀取數據,我只需要一個字符串的路徑! –

+0

如果你不想讀取數據你想用它做什麼?檢查存在? – Robert

回答

0

因爲我的項目是依賴於這些文件,我決定在build.xml中

<target name="-post-compile"> 
<copy todir="${dist.dir}/aima"> 
<fileset dir="aima/"/> 
</copy> 
</target> 

這些行添加到到dist /文件夾中的文件夾複製現在我並不需要使用佔用資源()或的getResourceAsStream()。

相關問題