【问题标题】:jar file not properly finding the filesjar 文件未正确找到文件
【发布时间】:2013-05-14 14:40:38
【问题描述】:

在过去的 3 个晚上,我一直在疯狂地试图找到这个问题的答案。 所以我有一个 java 程序,我希望它是 jar 格式,我希望它能够读取文本和图像文件。
我使用this.getClass.getResource("") 方法使图像文件工作正常,但是我无法让程序正确访问 .jar 中的文本文件,当我提取 jar 时,文本文件在那里,所以我知道它不是文本文件不在 jar 中的简单错误

这是我尝试使用的,但它不起作用(它可以在没有 jar 的情况下工作,但现在在 jar 中)

URL lurl = this.getClass().getResource("list.txt");
BufferedReader in3 = new BufferedReader(new FileReader(lurl.getFile()));

修复?

【问题讨论】:

  • 您的错误堆栈跟踪是什么,您必须将资源视为 InputStream,而不仅仅是您可以使用 FileReader 打开的另一个文件。
  • 不确定你的意思,你说的是这个方法吗? this.getClass().getResourceAsStream("文件名");
  • 是的,使用 getResourceAsStream
  • 但是 FileReader 没有输入流的构造函数

标签: java file text jar executable-jar


【解决方案1】:

假设你的班级是

my.package.MyClass

该方法将从 JAR 中的目录/my/package 中读取文件。

您可以通过以下方式打开资源:

BufferedReader in3 = new BufferedReader(new InputStreamReader(
this.getClass().getResourceAsStream("list.txt")));

【讨论】:

  • 好的哇非常感谢你,我现在可以工作了,但我现在唯一的问题是我不能将此代码应用到我程序中的其他部分,因为它只会将它作为一个输入流,我将如何处理输出流? BufferedWriter out2 = new BufferedWriter(new OutputStreamWriter(this.getClass().getResourceAsStream("list.txt")); out2.write(a1.getText()); out2.close();
  • 你不能那样写 jar。您可以尝试以 zip 格式打开它,但尝试修改 ClassLoader 加载的 jar 可能会导致不可预知的行为(假设操作系统允许此类操作)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-07
  • 2020-09-21
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
  • 2012-08-14
相关资源
最近更新 更多