java - 读取可运行 jar 中主包中不存在的文本文件

标签 java eclipse swing jar runnable

我有一个 Swing Java 程序,它读取名为“res”的资源文件夹中的 *.txt 文件,其中包含不同类型 JSON 的子文件夹。当我直接从 Eclipse 运行时,一切都很好。如果我创建一个可执行 jar,它就不起作用。我设法让它与一个可怕的解决方案一起工作,将我所有的文本文件放在调用它们的包中。

为了阅读它们,我使用了这行代码:

InputStream is = this.getClass().getResourceAsStream(file + ".txt");

其中文件是一个字符串。我以为这会在 jar 中搜索指定的文件,但显然不是。我尝试将路径放入文件 res/subfolder/name_of_file.txt 和 subfolder/name_of_file.txt 但无济于事。 这是我的项目的结构

Project
   src
      com.package
   res
      JSON_type1
      JSON_type2
         file.txt

从 com.package 中,我有一个必须从 JSON_type2/file.txt 读取的类。除了将我的文本文件组织在子文件夹中的明显原因之外,我的 GUI 将使用这些子文件夹的内容填充下拉列表。

从我从这里的其他问题中收集到的信息来看,如果我想将文本文件保留在调用它们的包中, getResourceAsStream() 将是我的解决方案。除此之外,我发现了一些关于子类化的东西ClassLoader并覆盖findResource() 。如果可能的话,我想避免使用这种解决方案,因为我还不太熟悉该类及其功能。

如果您需要更多信息,请告诉我。

谢谢

P.S.:这个问题源于我之前的问题 here

最佳答案

// added leading / to indicate search from root of class-path
String file = "/res/JSON_type2/file.txt";
InputStream is = this.getClass().getResourceAsStream(file);

关于java - 读取可运行 jar 中主包中不存在的文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10286116/

相关文章:

java - Spring Boot JSON解析错误: Cannot deserialize error

java - 我如何查看请求路径是否匹配但 Accept 不在包罗万象的处理程序中?

php - 用于 PHP 开发的出色 Eclipse 设置

java - 如何从 JFrame 中删除 JButton?

用于 Web 的 Java 开发

java - 如何以编程方式在 OpenEJB 中指定我的用户/角色?

java - Eclipse,将if语句格式化为一行语句

java - 在eclipse中配置类路径

java - 我如何在java中处理Jcombobox的按键事件

Java Swing 长线程执行