2014-11-01 255 views
0

使用Maven被編譯* .war文件,其中包含:如何從* .war/META-INF/MANIFEST.MF文件讀取manifest.mf文件?

- META-INF 
- - MANIFEST.MF 
- WEB-INF 
- - classes 
- - lib 
- - web.xml 

使用java.util.jar.Manifest中我想讀的清單文件中從那裏得到應用版本像https://stackoverflow.com/a/21046257/1728511

Application.class.getResourceAsStream("/META-INF/manifest.mf")返回null

Application.class.getResource("").getFile()回報%WAR%/WEB-INF/lib/javax.ws.rs-api-2.0.jar!/javax/ws/rs/core/

使用Spring,我已經實現了ApplicationContextAware接口獲取的ApplicationContext實例。

applicationContext.getClassLoader().getResourceAsStream("")返回%WAR%/WEB-INF/classes。我不需要WEB-INF,我需要META-INF目錄。如何得到它?

+1

你知道的一個事實,即每個'在'.war'可以包含'/ META-INF' .jar' ? – 2014-11-01 08:57:34

+0

@DirkLachowski,它對我有什麼幫助? – omickron 2014-11-01 09:10:08

回答

3

你在混合案例。您的META-INF包含MANIFEST.MF,但您正試圖在manifest.mf上打開資源流。

你將不得不改變

Application.class.getResourceAsStream("/META-INF/manifest.mf") 

Application.class.getResourceAsStream("/META-INF/MANIFEST.MF") 
+0

那麼如何閱讀MANIFEST.MF? – omickron 2014-11-01 09:11:17

+0

@omickron看到我編輯的答案。 – 2014-11-01 10:01:26

+0

哦,明白了。謝謝,它的工作原理! – omickron 2014-11-01 10:59:07