ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
URL url = classLoader.getResource("com/x/y/z.cfg");
File file = new File(url.getPath());
这在从Eclipse运行jar文件时起作用,但在jar文件中运行时不起作用。
java.io.FileNotFoundException:file:\ C:\ Users \ nova \ Desktop \ Matcher.jar!\ c OM \ X \ Y \ z.cfg
这不重复。我已经检查了所有其他问题,没有有用的信息。
答案 0 :(得分:17)
当文件被捆绑在jar中时,它将变为字节流而不是普通的File对象。
尝试
InputStream stram=getClass().getClassLoader().getResourceAsStream(relativePath);
答案 1 :(得分:1)
您无法创建File实例,因为您拥有的唯一文件是JAR。这就是getResource()返回URL的原因。您可以使用URL.openStream()方法来读取内容。