【问题标题】:access files and folders in executable jars访问可执行 jar 中的文件和文件夹
【发布时间】:2012-07-21 15:21:38
【问题描述】:

我面临以下问题: 我在我的 Java 项目中使用 Eclipse,我有以下结构:

  --> src
      --> package1
          ....
      --> package2
          ...

   -->dataFolder
       --> Folder1
            --> file1.xml
       --> Folder2
            file2.xml

在我的 java 项目中,我解析 dataFolder 目录中的所有文件。这没问题,因为我可以直接使用eclipse项目的根目录,像这样:

File dataStoreFolder = new File("dataFolder");
Some parsing......

但是当我将我的项目导出为可执行 jar 文件时,我无法再访问这些文件了。当然那是因为它们不在我放置 exec.jar 文件的同一个文件夹中。但我不想将包含数据的整个文件夹复制到我的 exec.jar 文件中。我可以以某种方式将它放在我的 jar 文件中吗? (我通过将 dataFolder 添加到 Java 构建路径来做到这一点,但它仍然无法像在 Eclipse 中那样工作)

有人可以帮帮我吗?

【问题讨论】:

    标签: java eclipse jar directory executable


    【解决方案1】:

    当您使用 jar 文件时,那些 文件 不再作为文件存在。

    您绝对可以将数据包含在您的 jar 文件中,但是您也需要更改访问它的代码。您不需要创建 File 对象,而是需要以下内容:

    InputStream input = Foo.class.getResourceAsStream("/dataFolder/Folder1/file.xml");
    

    所以你有两个可分离的任务:

    • 了解如何在 jar 文件中包含数据文件夹
    • 更改您的代码以适当地访问数据

    【讨论】:

    • 好的,谢谢您的回复。但是当我更改我的代码时,解析仍然在 eclipse 中工作还是只有在我执行我的项目时才工作?
    【解决方案2】:

    是的,您可以将它们放入您的 jar 文件中。只需在Eclipse下将dataFolder设为源文件夹,它会将非Java文件复制到目标目录,并将它们添加到jar文件中。

    一旦在 jar 文件中,你会得到 file1.xml 这样的:

    InputStream in = SomeClass.class.getResourceAsStream("/Folder1/file1.xml");
    

    【讨论】:

      猜你喜欢
      • 2013-07-16
      • 2012-02-18
      • 2015-09-19
      • 1970-01-01
      • 2011-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多