2015-12-02 119 views
1

我正在为Android Studio构建一个Groovy插件,它将执行一些gradle任务。不过,我需要从代码执行的JAR文件中加载一个XML文件。从JAR文件中加载xml文件有时可以运行

JAR文件是如下:

  • COM /包/代码
  • META-INF/gradle这个-插件
  • filename.xml中

因为XML文件是在我用此JAR的根在资源装载到一个InputStream

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

奇怪的是,它只有时有效。有时会返回文件,有时会返回null。例如,我用这条线检查路径:

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

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

我认为某件事情是错误的罐子建设,但我的IntelliJ设定的任务的gradle作为“罐子”,这确实创造了工作与XML文件的工作罐子。

难道我做错什么关于建筑物或有什么不对的xml文件?

回答

0

有两个功能之间的区别: https://stackoverflow.com/a/20069798/5387592

您应该准确:在何种情况下,结果不同:创建新的后缸,或再次启动后。如果该文件确实嵌入在罐子

1检查:改变的.jar为.zip,检查里面

2支票的真实路径。 在Eclipse例如,您的文件夹中放,但是这个文件夹中没有出现导致罐子

3使用建议:为你做

占据绝对路径