【问题标题】:Reading a Text File from a .jar从 .jar 读取文本文件
【发布时间】:2015-04-21 13:01:58
【问题描述】:

我想在我的项目中添加一个文本文件,并在 jar 文件和 eclipse 中读取它。我这样做的代码是这样的:

    InputStream fx = this.getClass().getResourceAsStream("PlayerStats.txt");
    Scanner scan = new Scanner(fx);

我已经为加载 imageIcon 做了这个,它工作正常,但是当我运行它时,它得到了这个错误:

"Exception in thread "main" java.lang.NullPointerException 
    at java.io.Reader.<init>(Reader.java:61)
    at java.io.InputStreamReader.<init>(InputStreamReader.java:55)
    at java.util.Scanner.<init>(Scanner.java:590)
    at Player.<init>(Player.java:16)
    at Main.main(Main.java:6)"

================================================ =======================

我的目录是这样的:

->项目
---->src(源代码)
-------->(默认包)
------------>...类列表...
---->资源(源文件夹)
-------->PlayerStats.txt
-------->...图片...

图像使用相同的方法可以正常工作:

ImageIcon image = new ImageIcon(this.getClass().getResource("bg.png"));

唯一的区别是我在不同的类中使用了这个方法,但它们都在同一个源文件夹(“src”)中。

我能做些什么来解决这个问题?

【问题讨论】:

  • 你试过用this.getClass().getResourceAsStream("/PlayerStats.txt")
  • 是的,我有。结果是一样的。我仍然遇到同样的错误。
  • 您是否解压缩了生成的 Jar 文件以确保该文件存在于 Jar 文件中并且存在于您期望的位置中?名称是否相同(必须完全匹配)
  • 是的。该文件与其他资源文件和类一起退出。文件名匹配。

标签: java eclipse file jar


【解决方案1】:

试试这个

ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource(yourFileName).getFile());

如果不起作用,请将资源文件夹放入 src 文件夹中

【讨论】:

  • 它现在在 IDE 中编译时可以工作,但是当我导出到 .jar 文件时它不会读取该文件。也许是因为它在 .jar 中时不是文件?我必须将资源转换为输入流吗?
  • 我将资源转换为 InputStream,现在可以工作了!在 Eclipse 和 .jar 中。谢谢!
猜你喜欢
  • 2014-05-24
  • 2012-10-09
  • 2015-12-23
  • 1970-01-01
  • 2016-08-04
  • 2017-10-07
  • 2012-12-25
  • 2011-10-11
  • 1970-01-01
相关资源
最近更新 更多