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

2023-11-30

我正在尝试在 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,但输入流为 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);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 java webstart 应用程序中的 jar 获取资源 的相关文章

随机推荐

  • 结构体变量初始化

    我尝试按如下方式初始化结构变量 struct Abc char str 10 int main struct Abc s1 s1 str Hello error 我可以理解这种行为 因为它与 char str 10 str Hello in
  • 使用Java API将数据上传到HDFS

    我已经搜索了一段时间 但似乎没有一个解决方案适合我 非常简单 我想使用 Java API 将数据从本地文件系统上传到 HDFS Java 程序将在已配置为通过 shell 与远程 Hadoop 集群通信的主机上运行 即hdfs dfs ls
  • ggplot2:如何动态包装/调整大小/重新缩放 x 轴标签,使其不会重叠

    我正在尝试实现一种包装 x 轴标签的解决方案 以便它们不会重叠 我知道这个问题已经被问过好几次了 并且有一些好的答案 但是 我见过的解决方案都没有回答如何随着情节的发展重新包装标签resized SO 的三个不同答案让我相信这是可以实现的
  • Mac 上的 SWT 问题

    我有一个使用 SWT UI 的 java 项目 但在任何 Mac OS X 计算机上部署它时遇到了问题 当程序从 Eclipse 中或从 jar 文件运行时 它本身可以在 Windows 上完美运行 在 Mac 上 该程序在 Eclipse
  • MongoDB:是否可以进行不区分大小写的查询?

    Example gt db stuff save foo bar gt db stuff find foo bar count 1 gt db stuff find foo BAR count 0 你可以使用regex 在你的例子中 这将是
  • 从linux命令行创建word doc文件

    我有一些 HTML 文件需要以 MS Word 文档格式分发 不要问 我可以在 OpenOffice 中手动打开每个文件 然后另存为 doc 文件 但我有很多文件 所以我想自动执行此操作 你知道一个方法吗 没有测试过 但是有pyuno访问
  • 将大小写切换到/之间

    Javascript 有没有一种方法可以通过 switch case 结构将一个整数与另一个整数进行比较 而不使用 if 语句 E g switch integer case 1 to 10 break case 11 to 20 brea
  • Mpi 在 Windows 中的使用

    我将 mpi 安装到 Windows 中 并且可以使用它的库 问题是 当我在 Windows 中编写时 mpiexec n 4 proj exe 进入命令提示符后 它不会进行正确的操作 4个不同的进程分别使用整个代码文件 它们的行为不像仅在
  • C# 并行运行多个非阻塞外部程序

    我需要从我的应用程序运行外部可执行文件的多个实例 该可执行文件的平均运行时间约为 3 分钟 我想重定向这些进程的输出 并更新 GUI 中的进度条 当然 我不想等到他们回来才能继续使用我的应用程序 我认为我应该为每个实例创建一个线程 并在线程
  • Ms Access 多选列表框移动器

    我有两个列表框 lfmVocabulary 和 lfmVocabularyAssign 它们都与表单没有绑定 我在实现代码设计的某些方面遇到了困难 到目前为止 我可以通过查询记录集使用值填充第一个列表表单 但我无法将项目从一个框传输到另一个
  • 无法解析 javax.xml.stream.XMLStreamReader 类型

    无法解析 javax xml stream XMLStreamReader 类型 它是从所需的 class 文件间接引用的 我在一行中收到此错误 我缺少哪个 jar javax xml stream XMLStreamReader在 Jav
  • 在 SQL Server XML 处理中参数化 XPath 以便修改()

    正如标题所示 我尝试参数化 SQL Server 中 XML 数据列的 edit 方法的 XPath 但遇到了一些问题 到目前为止我有 DECLARE newVal varchar 50 DECLARE xmlQuery varchar 5
  • 将外部js注入到自己创建的iframe中

    所以我试图将外部 css 和 js 注入到自己创建的 iframe 中以提供额外的安全层 因此不存在跨域问题 这是代码
  • 如何使用 POP3 检索 Gmail 子文件夹/标签?

    下面的代码使用javamail API来访问gmail String host pop gmail com int port 995 Properties properties new Properties properties put m
  • 从 Xcode 启动 iOS 模拟器并出现黑屏,然后 Xcode 挂起且无法停止任务

    我在 iOS 模拟器中运行基本 iPhone 应用程序时遇到问题 在阅读斯坦福 iTunes CS193p 讲座时 我已经搜索了一段时间 Google 和 SO 但到目前为止找不到解决方案 类似的错误还有很多 但解决方案似乎并不能解决这个问
  • cor.test() 的矩阵版本

    Cor test 需要向量x and y作为参数 但我有一个完整的数据矩阵 我想成对地测试 Cor 将此矩阵作为参数就好了 我希望找到一种方法来为cor test 其他人的常见建议似乎是使用cor prob https stat ethz
  • Jquery 旋转 div [重复]

    这个问题在这里已经有答案了 我无法旋转 div 控制台中没有警告或错误 您可以查看JSFiddle 版本在这里 我使用的代码是 div2 click someFunction2 function someFunction2 div2 ani
  • 禁用 HTML5 范围输入的跟踪

    我正在尝试找到一种方法来阻止用户单击 HTML5 范围输入的 轨道 部分 本质上 我只希望用户能够使用 句柄 来更改范围值 这可能吗 至少在 chrome 上可以通过指针事件实现 input type range pointer event
  • 客户端与服务器对话时如何克服“Access-Control-Allow-Origin”错误

    因此 我正在使用 swiip 的一个 yeoman 项目 名为 Generator gulp Angular 只需执行 npm search gulp Angular 您就会看到它 开箱即用的客户端从 127 0 0 1 3000 运行 我
  • 从 java webstart 应用程序中的 jar 获取资源

    我正在尝试在 Java Webstart 应用程序中加载大量资源 我最初尝试使用以下方式加载这些 ClassLoader loader MyClass class getClassLoader URL url loader getResou