【发布时间】:2014-10-31 12:45:21
【问题描述】:
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: 文件:\C:\Users\nova\Desktop\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那么你不需要。 -
URL.getFile() 不将 URL 转换为有效的文件路径。它仅返回 URL 的路径部分。 (在 Java 1.0 时代,大多数 URL 引用物理文件;这就是该方法被命名为 getFile 的原因。)