如何在WAR应用程序中读取MANIFEST.MF?

yeg*_*256 13 java servlets

我想阅读MANIFEST.MF我的WAR申请.我怎样才能找到它的文件名?

Bal*_*usC 33

我怎样才能找到它的文件名?

你已经拥有它了.也许你想找到绝对的文件位置?你可以用ServletContext#getRealPath()它.

String relativeWARPath = "/META-INF/MANIFEST.MF";
String absoluteDiskPath = getServletContext().getRealPath(relativeWARPath);
File file = new File(absoluteDiskPath);
// ...
Run Code Online (Sandbox Code Playgroud)

或者如果您想InputStream直接获取它,请使用ServletContext#getResourceAsStream().

InputStream input = getServletContext().getResourceAsStream("/META-INF/MANIFEST.MF");
// ...
Run Code Online (Sandbox Code Playgroud)

  • 将此与 [java.util.jar.Manifest](https://docs.oracle.com/javase/7/docs/api/java/util/jar/Manifest.html) 结合起来进行正确解析。 (2认同)

yeg*_*256 10

我在每个应用程序中都遇到了同样的问题,并决定在其中创建一个带有实用程序类的组件:jcabi-manifests.现在可以很容易地从MANIFEST.MF类路径中的一个属性加载任何属性:

import com.jcabi.manifests.Manifests;
String value = Manifests.read("My-Version");
Run Code Online (Sandbox Code Playgroud)

另外,请查看:http://www.yegor256.com/2014/07/03/how-to-read-manifest-mf.html