【发布时间】:2014-05-13 01:16:26
【问题描述】:
我想我犯了一个简单的错误,但也许你们可以帮助我。我有一个 Jetty 网络服务器。我在下面部署了一个 servlet:
{Jetty-Folder}/webapps/BotServlet/WEB-INF
--------/lib/Server_BotServlet.jar
--------/web.xml
因此,Server_BotServlet 内部的 servlet 可以适当地启动,我可以通过适当的 url 访问它。我的问题现在是 Server_BotServlet.jar 中的清单文件。
Server_BotServlet.jar
----> /META-INF/MANIFEST.MF
Manifest 文件是在 Eclipse 和表单中使用 ANT 脚本添加的:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.4
Built-Date: 2014-04-01 18:53:54
Built-Version: 2014-04-01 18:53:54
问题:我无法在网络服务器中使用以下代码读取清单文件:
InputStream inputStream = getServletConfig().getServletContext().getResourceAsStream("/META-INF/MANIFEST.MF");
if(inputStream == null) {System.out.println("Input stream is null1");}
try {
Manifest manifest = new Manifest(inputStream);
Attributes attributes = manifest.getMainAttributes();
versionString = attributes.getValue("Built-Version");
}
catch(Exception e) {
e.printStackTrace();
versionString = "N/A";
}
InputStream 最终总是等于 null。在另一种情况下,我让它打印出getServletContext().getContextPath,它会向我显示"/BotServlet/"。如果我错了,请纠正我,但是当一个 jar 在运行时加载时,它会从上下文路径中“运行”吗?或者我是否会错误地部署这些 jar,因为 getResourceAsStream() 似乎没有正确地看到 jar 文件。
我正在使用here描述的方法。
【问题讨论】:
标签: java servlets ant jar manifest.mf