【问题标题】:Access to resource missing with an exported jar file使用导出的 jar 文件访问缺少的资源
【发布时间】:2015-02-05 21:24:02
【问题描述】:

如果我在 eclipse 中运行以下代码,我的程序编译没有问题。如果我尝试将程序导出为可运行的 jar 文件,则找不到我的资源。

public class Test {

   public static void main(String[] args) {
  
      File file = new File(Tester.class.getClassLoader().getResource("res/myFile.txt").getFile());

      if(!file.exists()) { System.out.println("File not found."); }
   }

}

文件夹结构(通过运行jar tf test.jar):

com/

com/test/

com/test/Tester.class

分辨率/

res/myFile.txt

【问题讨论】:

  • 请向我们展示您的文件夹结构。文件是否包含在您的 jar 中?
  • @Jens 是的,该文件包含在 jar 中。我打开它仔细检查。
  • 它在res的文件夹下?
  • @Jens 正确...正如我提到的,它在 Eclipse 中运行良好,只是不像 jar。
  • 看我的回答。我猜你需要在 res 前面加一个“/”。如果不向我们展示您的 jar 中的目录结构。

标签: java jar resources


【解决方案1】:

jar 的情况下没有这样的文件。

改用Tester.class.getResourceAsStream("/myFile.txt") 并使用流

更新: 查看更多herehere

【讨论】:

  • 这个可行,但我不明白为什么我无法通过可执行jar使用上述方法获取文件?
  • 你不能。没有这样的文件。 jar 文件中有一些东西,FileSystem 无法访问文件的内部部分(实际上 jar 是一个 zip 存档)。但是java提供了通过资源流访问jar文件内容的方法。
猜你喜欢
  • 2012-04-26
  • 2013-04-28
  • 2017-11-08
  • 2012-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-24
相关资源
最近更新 更多