当前位置: 首页 > 面试题库 >

在Java Webstart应用程序中从Jar获取资源

宋嘉禧
2023-03-14
问题内容

我正在尝试在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

…并遵循了这种方法来创建资源目录,然后我可以进行迭代以获取相关资源。



 类似资料:
  • "app-login\pom.xml" “应用程序登录客户端\pom.xml” “应用程序登录服务器\pom.xml” "app-login-share\pom.xml" 在最后一分钟,我看到“lib-resource”项目位于“lib-bloated”下,请在下面的“lib-bloated\pom.xml”中找到它 提前谢谢。

  • 我们的webstart应用程序(不是小程序)遇到了奇怪的启动问题。 启动应用程序会显示应用程序启动屏幕,但javaws进程会在不久后终止,不会在对话框、java控制台或日志文件中显示任何错误消息。javaws似乎只是在实际启动实际应用程序之前停止。无论用户尝试从桌面快捷方式还是从网页启动应用程序,都无关紧要。当从本地计算机使用javaw运行而无需webstart时,相同的应用程序可以正常工作。 应

  • 问题内容: 您能否解释一下如何在我的子类中获取实例?可能吗?我已尝试按照以下代码片段的方式进行操作,但它似乎不起作用- 未设置: web.xml: 问题是我需要从中获取上下文参数。如果有其他方法,请给我一个提示,我将不胜感激。 我了解注记可能并非为此目的。实际上,我不需要自己。如果只有我可以从web.xml中获取上下文参数,我将非常高兴。 这是我真正需要的一个例子: 谢谢。 问题答案: 从Jers

  • service类有一个方法可以进行查询,从Application.properties文件中填充了属性的成员变量中获取查询字符串: 第二个SpringBoot应用程序是一个具有REST控制器的Web应用程序。这些控制器公开调用CaseInvocationAPI库(特别是CaseInvocationService类)的endpoint。 我遇到的问题是,当SpringBoot WEBAPPLICAT

  • 启动jar时,控制台会说找不到文件,也没有加载字体。我怎样才能解决这个问题? 我得到了这个密码:

  • 我需要从应用程序的根内部获得一个资源,当它打包到JAR中时。我的项目是这样的: 我使用以下代码: 在打包到jar之前运行时,它会发现文件很好(在ProjectRoot内部)。运行jar时,它找不到它,并将此路径转换为。 此代码: 在打包之前运行时,查找中的资源。打包后,它声称从中获取资源。 此代码: 我想做的只是将资源放在中,并且能够从jar外部(从IDE运行类文件时)和内部(使用Maven将文件