是否有可能在Java中读取放置在Jar中的文件,它也被置于Ear中?

时间:2010-11-15 18:32:48

标签: java java-ee jar

我想知道是否有可能找到放在耳塞中的XML文件中的内容。它可以帮助我找到java bean的属性。

在耳朵里,我可以遍历文档并查看内部的内容,但如果它是一个jar,我就无法在其中迭代文档。

有人可以给我一些建议吗?

3 个答案:

答案 0 :(得分:1)

从ear文件中,您应该能够提取jar文件。然后,您可以使用WinZip7 Zip等来浏览GUI中的jar文件内容。或者,您可以运行jar tf命令在命令行中提取jar文件的内容。如果您没有这些工具并使用Windows,那么您可以将jar文件重命名为.zip,Windows应该能够探索它(大多数情况下它都有效)。

编辑 - 我不确定你是否想用Java做这件事。在这种情况下,您正在寻找JarFile。我在这里找到了example以编程方式探索Jar内容。

答案 1 :(得分:1)

所以我只测试了你想要做的事情 - 只要JAR位于你的EAR的类路径中,那么你就可以访问其中的任何文件。基本上尝试从应用程序的context-root查找文件。

例如,如果在您的JAR中文件abc.xml位于包a.b.resources下,那么从EAR中的servlet可以使用以下命令访问它:
InputStream is = this.getClass().getClassLoader().getResourceAsStream("a/b/resources/abc.properties");

答案 2 :(得分:0)

是的,您可以读取打包到zip文件中的任何文件。在你的路上你必须打开多少嵌套的zip文件并不重要。使用ZipInputStream,获取所需的ZipEntry,读取它的内容。如果它仍然是zip,请将其打开并反复执行,直到您访问所需的资源。