我需要加载我在Glassfish上作为EAR部署的应用程序的清单。
我在互联网上找到的所有信息都是关于阅读罐子或战争的清单。我试图将我发现的代码片段应用到我的问题中,但我还没有成功。我得到的是,我可以从我的EAR包含的罐子,或者甚至从Glassfish域lib文件夹中的罐子中获得任何清单。不是EAR之一。
EAR的结构:在根级别有一些jar,其中一个包含具有打算加载EAR清单的代码的类。
ClassLoader cl = getClass().getClassLoader();
resources = cl.getResources("META-INF/MANIFEST.MF");
我已经尝试了getResourceAsStream方法,但由于那次没能给我我想要的清单,我尝试了getResources方法来查看它可以给我的所有清单并迭代它们,看一下它们所在的路径。而且这些都不是EAR的表现。我得到了我的EAR中所有罐子的清单,以及Glassfish域中的所有lib罐子。
我也尝试将getClassLoader转换为URLClassLoader和EarClassLoader,正如其他StackOverFlow类似问题中所建议的那样,结果没有区别。
此EAR是从MyEclipse中的项目生成的,该项目只有EAR方面。该项目不包含任何代码,只引用其他最终将jar放入其中的项目。
答案 0 :(得分:2)
MANIFEST.MF
上.ear
的{{1}} <{1}},您必须实际打开classpath
作为常规{{} 1}}文件并以这种方式阅读。
答案 1 :(得分:1)
您需要找到耳朵文件的位置,然后通过以下方式获取清单:
new java.util.jar.JarFile(file).getManifest();