ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
URL url = classLoader.getResource("com/x/y/z.cfg");
File file = new File(url.getPath());
這適用於從Eclipse運行jar文件但在jar文件中運行時不起作用。classLoader.getResource在jar文件中不起作用
java.io.FileNotFoundException:文件:\ C:\用戶\新星\桌面\ Matcher.jar \ C OM \ X \ Y \ z.cfg
這不是一個副本。我檢查了所有其他問題,沒有有用的信息。
一旦你得到它,你想用這個'File'來做什麼?你不能從你在JAR中獲取資源的URL中創建一個'File'(因爲它不是'file:'URL,通常是'jar:file:/path/to/file.jar!/ com/x/y/z.cfg'),但是如果你使用的API可以接受一個'URL'或'InputStream'而不是'File',那麼你就不需要。 – 2014-10-31 12:55:01
這是多次解釋:[here](http://stackoverflow.com/questions/944610/how-do-i-access-a-config-file-inside-the-jar),[here](http: //stackoverflow.com/questions/20389255/java-reading-a-resource-file-from-within-jar),[here](http://stackoverflow.com/questions/403256/how-do-read -a-資源文件從-A-java的罐子文件?RQ = 1)。這個共振真的是因爲File代表一個文件系統對象,並且jar的內容不能被文件系統訪問(但是Java可以以某種方式處理它 - 作爲InputStream)。 – 2014-10-31 12:59:37
URL.getFile()*不會將URL轉換爲有效的文件路徑。它僅僅返回URL的路徑部分。 (在Java 1.0的日子裏,大多數URL都會引用物理文件;這就是爲什麼該方法被命名爲getFile。) – VGR 2017-03-01 16:41:10