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