读取 EAR 的清单

Reading an EAR's manifest

我需要加载我在 Glassfish 上作为 EAR 部署的应用程序的清单。

我在互联网上找到的所有信息都是关于阅读罐子或战争的清单。我试图将我发现的代码片段应用到我的问题中,但我没有成功。我得到的是我可以有任何清单,可以来自我的 EAR 包含的罐子,甚至可以来自 Glassfish 域 lib 文件夹中的罐子。不是 EAR 之一。

EAR 的结构:在根级别有一些 jar,其中一个包含 class 以及用于加载 EAR 清单的代码。

ClassLoader cl = getClass().getClassLoader();
resources = cl.getResources("META-INF/MANIFEST.MF");

我已经尝试了 getResourceAsStream 方法,但是因为它没有给我想要的清单,所以我尝试了 getResources 方法来查看它可以给我的所有清单并迭代它们,看看路径在哪里他们是。其中 none 是 EAR 清单。我得到了我的 EAR 中所有 jar 的清单,以及 Glassfish 域中的所有 lib jar。

我也试过将 getClassLoader 转换为 URLClassLoader 和 EarClassLoader,正如其他 Whosebug 类似问题中所建议的那样,结果没有差异。

此 EAR 是从 MyEclipse 中只有 EAR 方面的项目生成的。该项目不包含任何代码,只是引用了最终在其中制作罐子的其他项目。

.earMANIFEST.MF 而不是 classpath,您必须实际打开 .ear作为常规 zip 文件并以这种方式阅读。

您需要找到 ear 文件所在的位置,然后通过以下方式获取清单

new java.util.jar.JarFile(file).getManifest();