【发布时间】:2016-04-28 03:31:38
【问题描述】:
我需要使用 URL 访问当前执行的 .jar 中的文件。
URL url = BlockConverter.class.getResource("/test.txt");
System.out.println(url.toString());
InputStream is = url.openStream();
这就是我所做的。 输出是:
jar:file:/C:/Users/User/Desktop/SERVER/plugins/MyJar.jar!/test.txt
我的 InputStream 在初始化时总是会抛出 IOException,即使 URL 输出正确。 那怎么可能呢? 为什么我打不开直播?
编辑: 另外,请不要回答“use getResourceAsStream”,因为它使用的是同一种代码:
public InputStream getResourceAsStream(String name) {
URL url = getResource(name);
try {
return url != null ? url.openStream() : null;
} catch (IOException e) {
return null;
}
}
【问题讨论】:
-
来自 IOException 的消息是什么?就此而言,您的 jar 是否在其根目录中有 test.txt?
-
好的,非常感谢。在对代码进行一些更改后,我没有读取堆栈跟踪,结果发现文件名中的无效字符导致了 IOException,而不是流。非常感谢你的想法,我现在会羞愧地哭泣。
-
相信我,您不是第一个在堆栈跟踪中错过消息的人。不是由一个长镜头。 :P