【问题标题】:Loading xml file from within JAR file sometimes works从 JAR 文件中加载 xml 文件有时有效
【发布时间】:2016-03-06 16:58:49
【问题描述】:

我正在为 Android Studio 构建一个 Groovy 插件,它将执行一些 gradle 任务。但是我需要从执行代码的 JAR 文件中加载一个 XML 文件。

JAR 文件如下:

  • com/packagename/code
  • META-INF/gradle-plugins
  • 文件名.xml

因为 xml 文件位于 JAR 的根目录,所以我使用它来将资源加载到输入流中

new InputStreamReader(CheckStyleTask.class.getResourceAsStream("/filename.xml"))

奇怪的是它只在某些时候有效。有时它返回文件,有时它返回 null。例如我拿这条线来检查路径:

        println(CheckStyleTask.class.getResource("/filename.xml").getPath())

而且路径是完全正确的。所以它可以用getResource找到文件,但是用getResourceAsStream它返回null。

我认为 jar 的构建有问题,但在 IntelliJ 中,我将 gradle 任务设置为“jar”,它确实创建了一个带有工作 xml 文件的工作 jar。

我在建筑物方面做错了什么还是 xml 文件有什么问题?

【问题讨论】:

    标签: java android groovy gradle inputstream


    【解决方案1】:

    这两个函数有区别: https://stackoverflow.com/a/20069798/5387592

    您应该准确:在哪些情况下,结果会有所不同:创建新 jar 后,或再次启动后。

    1检查文件是否真的嵌入到jar中:将.jar更改为.zip并检查里面

    2 检查真实路径。 例如,在 Eclipse 中,您放入了一个文件夹,但该文件夹没有出现在生成的 jar 中

    3 使用建议:采取绝对路径

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-06
      • 2014-12-26
      • 1970-01-01
      • 2010-10-07
      • 2019-01-02
      • 2014-05-07
      相关资源
      最近更新 更多