【发布时间】:2011-03-18 13:16:29
【问题描述】:
我正在编写一个 Java 应用程序,它需要访问通过 JNLP 运行的 .jar 文件中的多个资源。
虽然应用程序在我的开发环境 (Eclipse) 中运行良好,但在通过 JNLP 执行时却无法运行,显然是因为它在 jar 中找不到资源文件。我检查了资源文件,资源肯定在那里。
我目前使用的代码如下:
someclass.getResourceAsStream("/resources/somefile.png");
访问可与 JNLP 一起使用的 .jar 中的资源文件的正确方法是什么?
【问题讨论】:
-
附注它也可以作为从命令行运行的可执行 jar 来运行....所以它似乎确实是 JNLP 特定的问题
-
尝试使用上下文类加载器:
Thread.currentThread().getContextClassLoader().getResourceAsStream("/resources/somefile.png")。 -
看起来很有希望(尽管出于某种原因,我必须删除路径中的前导“/”)。现在只是测试....
-
当您通过类获取资源时,路径是相对于类解析的,除非您以“/”开头。当您通过 ClassLoader 获取它时,它始终被解析为绝对路径,并且不能以 '/' 开头。
标签: java resources jar packaging jnlp