我正在为Android Studio构建一个Groovy插件,它将执行一些gradle任务。但是,我需要从代码执行的JAR文件中加载XML文件。
JAR文件如下:
因为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文件有什么问题?
答案 0 :(得分:0)
这两个功能有所不同: https://stackoverflow.com/a/20069798/5387592
你应该准确:在哪种情况下,结果会有所不同:创建新jar之后,或者再次启动之后。
1检查文件是否真的嵌入jar中:将.jar更改为.zip并检查内部
2检查真实路径。 例如,在Eclipse中,您放入了一个文件夹,但此文件夹不会出现在生成的jar
中3使用建议:采取绝对路径