我正在尝试在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根目录中。
好的-问题是我试图访问资源目录(即从我的问题示例中,resourceName是资源文件的目录)。
尽管在大多数环境中(例如在IDE中)都可以通过这种方式访问资源,但是从Java Webstart运行时则是不可能的。
我发现此页面特别有用:http : //lopica.sourceforge.net/faq.html#listresources
…并遵循了这种方法来创建资源目录,然后我可以进行迭代以获取相关资源。