读取 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 方面的项目生成的。该项目不包含任何代码,只是引用了最终在其中制作罐子的其他项目。
.ear
的 MANIFEST.MF
是 而不是 classpath
的 ,您必须实际打开 .ear
作为常规 zip
文件并以这种方式阅读。
您需要找到 ear 文件所在的位置,然后通过以下方式获取清单:
new java.util.jar.JarFile(file).getManifest();
我需要加载我在 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 方面的项目生成的。该项目不包含任何代码,只是引用了最终在其中制作罐子的其他项目。
.ear
的 MANIFEST.MF
是 而不是 classpath
的 ,您必须实际打开 .ear
作为常规 zip
文件并以这种方式阅读。
您需要找到 ear 文件所在的位置,然后通过以下方式获取清单:
new java.util.jar.JarFile(file).getManifest();