【发布时间】:2015-01-19 15:50:17
【问题描述】:
我正在尝试在 Java webstart 应用程序中加载大量资源。
我最初尝试使用以下方法加载这些:
ClassLoader loader = MyClass.class.getClassLoader();
URL url = loader.getResource("resourceName");
File file = new File(url.toURI());
但这不起作用 - 它引发了 IllegalArgumentException。进一步的研究表明,这种方法不适用于从 jar 文件中访问资源,我需要使用以下方法:
ClassLoader loader = MyClass.class.getClassLoader();
InputStream in = loader.getResourceAsStream("resourceName");
但是,当我使用 Jnlp 运行它时,我得到了奇怪的结果。如果我运行以下命令:
public static void main(String[] args) throws IOException, URISyntaxException {
ClassLoader loader = MyClass.class.getClassLoader();
String r = "resourceName";
URL url = loader.getResource(r);
System.out.println(url!=null);
InputStream in = loader.getResourceAsStream(r);
System.out.println(in!=null);
}
在我的 IDE 中,我得到了真实的和真实的(如我所料)。 从 jnlp 运行,我的 URL 为 true,但 InputStream 为 false。
关于我可能做错的任何想法? 有没有更好的方法来加载资源以在 java webstart 应用程序中使用?
编辑:关于信息,我的资源在 MyProject/src/main/resources 中,当生成 jar 时,资源在 jar 根目录中。
【问题讨论】:
-
jar 文件的根目录下是否有“resourceName”文件?
-
@JB Nizet - 是的(需要为 (loader.getResource(r)!=null) 实现)。编辑问题以澄清。
标签: java resources jar jnlp java-web-start