gpt4 book ai didi

java - 在 java webstart 应用程序中从 jar 获取资源

转载 作者:行者123 更新时间:2023-12-04 06:15:30 25 4
gpt4 key购买 nike

我正在尝试在 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 中,我得到 true & true(正如我所期望的)。
从 jnlp 运行,URL 为 true,但 InputStream 为 false。

关于我可能做错了什么的任何想法?
是否有更好的方法来加载在 java webstart 应用程序中使用的资源?

编辑:有关信息,我的资源位于 MyProject/src/main/resources 中,生成 jar 时,资源位于 jar 根目录中。

最佳答案

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 = url.openStream();
System.out.println(in!=null);
}

关于java - 在 java webstart 应用程序中从 jar 获取资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7306965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com