2015-12-02 114 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使用建議:爲你做

佔據絕對路徑