在 Java servlet 中读取自己的 MANIFEST.MF
Reading own MANIFEST.MF in Java servlet
我正在尝试读取 Java servlet 中自己的 MANIFEST.MF 资源。我的情况:我在 EAR 中有一个 WAR(带有我想阅读的清单)。 EAR 中还有其他几个 WARs 和 JAR。 class路径真的很长。
我尝试了几种在 Web 上找到的方法,包括 Whosebug。
我可以使用
读取所有MANIFEST.MF个文件
this.getClass().getClassLoader().getResources("META-INF/MANIFEST.MF");
并遍历它们。但是,我不知道哪个是我的——我什至不知道 Implementation-Title,因为它是由构建管道生成的。 (我可以根据构建管道的知识进行猜测,因此我知道那里有正确的清单。但是,我无法在生产代码中进行猜测。)
当然,
this.getClass().getClassLoader().getResourceAsStream("META-INF/MANIFEST.MF");
returns 来自 class 路径上其他 jar 的完全错误的清单。
我也试过了
this.getServletContext().getResourceAsStream("META-INF/MANIFEST.MF");
但它 returns 为空值。
如何访问属于包含当前 运行 servlet 的 WAR 的 MANIFEST.MF 文件?
I also tried
this.getServletContext().getResourceAsStream("META-INF/MANIFEST.MF");
but it returns a null.
该路径必须以 /
开头才能表示绝对 WAR 资源路径。
this.getServletContext().getResourceAsStream("/META-INF/MANIFEST.MF");
使用 ClassLoader#getResourceXxx()
没有意义,因为 WAR 自己的清单文件不在类路径中。它位于 webroot 中,紧挨着 /WEB-INF
等等。所以,ServletContext#getResourceXxx()
是唯一的办法。
我正在尝试读取 Java servlet 中自己的 MANIFEST.MF 资源。我的情况:我在 EAR 中有一个 WAR(带有我想阅读的清单)。 EAR 中还有其他几个 WARs 和 JAR。 class路径真的很长。
我尝试了几种在 Web 上找到的方法,包括 Whosebug。
我可以使用
读取所有MANIFEST.MF个文件this.getClass().getClassLoader().getResources("META-INF/MANIFEST.MF");
并遍历它们。但是,我不知道哪个是我的——我什至不知道 Implementation-Title,因为它是由构建管道生成的。 (我可以根据构建管道的知识进行猜测,因此我知道那里有正确的清单。但是,我无法在生产代码中进行猜测。)
当然,
this.getClass().getClassLoader().getResourceAsStream("META-INF/MANIFEST.MF");
returns 来自 class 路径上其他 jar 的完全错误的清单。
我也试过了
this.getServletContext().getResourceAsStream("META-INF/MANIFEST.MF");
但它 returns 为空值。
如何访问属于包含当前 运行 servlet 的 WAR 的 MANIFEST.MF 文件?
I also tried
this.getServletContext().getResourceAsStream("META-INF/MANIFEST.MF");
but it returns a null.
该路径必须以 /
开头才能表示绝对 WAR 资源路径。
this.getServletContext().getResourceAsStream("/META-INF/MANIFEST.MF");
使用 ClassLoader#getResourceXxx()
没有意义,因为 WAR 自己的清单文件不在类路径中。它位于 webroot 中,紧挨着 /WEB-INF
等等。所以,ServletContext#getResourceXxx()
是唯一的办法。