classLoader.getResource在jar文件中不起作用

时间:2014-10-31 12:45:22

标签: java eclipse

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

这不重复。我已经检查了所有其他问题,没有有用的信息。

2 个答案:

答案 0 :(得分:17)

当文件被捆绑在jar中时,它将变为字节流而不是普通的File对象。

尝试

InputStream stram=getClass().getClassLoader().getResourceAsStream(relativePath);

More Tutorial...

阅读类似的帖子herehere

答案 1 :(得分:1)

您无法创建File实例,因为您拥有的唯一文件是JAR。这就是getResource()返回URL的原因。您可以使用URL.openStream()方法来读取内容。