2010-11-15 58 views
0

我想知道是否可以找到一個XML文件中的內容放置在一個罐子裏,它也放在耳朵裏。這將幫助我找到java bean的屬性。是否有可能在Java中讀取放置在耳朵中的文件,並將它放置在Ear中?

到耳邊我可以遍歷文檔,看看裏面有什麼,但如果它是一個罐子,我不能迭代裏面的文檔。

有人可以給我一些建議嗎?

+1

你是在談論JAR中的JAR,還是JAR中的EAR,或者JAR中的JAR中的EAR?問題標題與問題信息相矛盾。問題標題的答案是「否」,問題信息的答案是「是」。詳細的建議取決於完全不清楚的上下文。 「滾動文檔」是沒有意義的。什麼是功能需求和用例? – BalusC 2010-11-15 18:36:20

+0

我以爲他有一個jar文件打包在ear文件中。但你是對的BalusC,這個標題與這個問題相矛盾。我沒有注意到這一點。 – CoolBeans 2010-11-15 18:39:24

+0

@CoolBeans:所以,你解釋「滾動文檔」爲「使用Windows資源管理器查看EAR/JAR中的文件」?這不是一個編程問題,標題以「Java中是否可能」開頭...... – BalusC 2010-11-15 18:41:44

回答

1

從ear文件你應該能夠提取jar文件。然後您可以使用WinZip7 Zip等來查看GUI中的jar文件內容。或者,您可以運行jar tf命令以在命令行中提取jar文件的內容。如果您沒有任何這些工具並使用Windows,那麼您可以將jar文件重命名爲.zip,並且Windows應該能夠探索它(大多數情況下它可以工作)。

編輯 - 我不確定你是否想用Java來做。在這種情況下,您正在尋找JarFile。我在這裏發現了一個example,用於以編程方式探索Jar內容。

+0

我認爲OP想以編程的方式做到這一點。 – anirvan 2010-11-15 18:44:53

1

所以我只是測試了你想要做的事情 - 只要JAR位於你的EAR的類路徑中,那麼你可以訪問其中的任何文件。基本上是嘗試從應用程序的上下文根目錄中查找文件。

例如,如果在你的JAR文件abc.xml所在的包a.b.resources下,然後說你的耳朵的servlet可以使用訪問:
InputStream is = this.getClass().getClassLoader().getResourceAsStream("a/b/resources/abc.properties");

+0

'abc.xml'!='abc.properties',加上它在多類加載器環境中,更推薦使用線程上下文的類加載器而不是類'one。 – BalusC 2010-11-15 18:56:24

+0

同意多類加載器環境部分,但_.properties_是一個錯字。 – anirvan 2010-11-15 20:47:04

0

是的,你可以閱讀爲打包的任何文件進入zip文件。無論您要在自己的路上打開多少嵌套的zip文件都無關緊要。使用ZipInputStream,獲取需要的ZipEntry,讀取它的內容。如果仍然是zip文件,請將其打開並重復執行,直到您訪問所需的資源。

相關問題