首页 文章

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

提问于
浏览
1

我正在为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 回答

  • 0

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

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

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

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

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

相关问题