2013-11-23 39 views
1

我在abc.jar的classpath中有一個文件X.json。有一個在abc.jar方法READFILE讀取該文件作爲如何從ouside jar中讀取jar文件中的文件

URL url = Abc.class.getClassLoader().getResource("X.json"); 
File file = new File(url.toURI());* 

其內容是罰款,如果我從玻璃瓶中的IE主要方法範圍內的某個文件運行它abc.jar內

但當readFile從其他代碼從abc.jar之外調用時,它會失敗java.lang.IllegalArgumentException: URI is not hierarchical

如何通過從jar的上下文外調用readFile方法來獲取File對象?

+0

你爲什麼不發佈stacktrace? – isnot2bad

+1

文件表示文件系統上的路徑。文件夾中的文件不在文件系統中。所以無論你從哪個類執行這個代碼,它都沒有意義,也不會工作。要讀取類路徑中的jar文件,使用'Class [Loader] .getResourceAsStream()'。 –

+0

似乎是一樣的http://stackoverflow.com/questions/10144210/java-jar-file-use-resource-errors-uri-is-not-hierarchical – jCoder

回答

2

到部署時,這些資源將變爲。既然如此,資源必須由URL而不是File訪問。有關標籤,請參閱info page,以形成URL