【发布时间】:2016-02-02 13:03:57
【问题描述】:
我正在尝试在 Java servlet 中读取自己的 MANIFEST.MF 资源。我的情况:我在 EAR 中有一个 WAR(带有我想阅读的清单)。 EAR 中还有其他几个 WAR 和 JAR。一个类路径真的很长。
我尝试了几种在网络上找到的方法,包括 StackOverflow。
我可以使用
读取所有 MANIFEST.MF 文件this.getClass().getClassLoader().getResources("META-INF/MANIFEST.MF");
并遍历它们。但是,我不知道哪个是我的——我什至不知道实施标题,因为这是由构建管道生成的。 (我可以根据构建管道的知识进行猜测,因此我知道存在正确的清单。但是,我无法在生产代码中猜测。)
当然,
this.getClass().getClassLoader().getResourceAsStream("META-INF/MANIFEST.MF");
从类路径上的其他 jar 返回完全错误的清单。
我也试过
this.getServletContext().getResourceAsStream("META-INF/MANIFEST.MF");
但它返回一个空值。
如何访问属于包含当前正在运行的 servlet 的 WAR 的 MANIFEST.MF 文件?
【问题讨论】:
-
您打算读取哪些清单属性?其中许多都可以通过现有的 Java SE 方法获得。
-
VGR +1,获取版本例如:String version = getClass().getPackage().getImplementationVersion();
-
以上 cmets 不适用于 WAR 自己的 manifest,因此是错误的。
-
@BalusC 你是对的。我忽略了他想要 .war 文件的清单。可能应该编辑标题以澄清这一点。
-
当然。但是在 WEB-INF/classes 和 WEB-INF/lib 下的每个 .jar 中都可以有一个清单。
标签: java servlets war manifest.mf