从JAR文件中加载xml文件有时会起作用

时间:2015-12-02 12:37:51

标签: java android groovy gradle inputstream

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

JAR文件如下:

  • COM /包/代码
  • META-INF / gradle这个-插件
  • filename.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'这确实创建了一个工作jar与工作xml文件。

我是否对构建有任何不妥之处或xml文件有什么问题?

1 个答案:

答案 0 :(得分:0)

这两个功能有所不同: https://stackoverflow.com/a/20069798/5387592

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

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

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

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