我想我犯了一个简单的错误,但也许你们可以帮助我。我有一个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
在eclipse和表单中使用ANT脚本添加Manifest文件:
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时,它会从contextpath“运行”?或者我是否正在部署这些jar,因为getResourceAsStream()似乎没有正确地看到jar文件。
我正在使用here所述的方法。
答案 0 :(得分:1)
Servlet上下文/BotServlet/
不在/BotServlet/WEB-INF/lib/Server_BotServlet.jar
文件中。您可以在/WEB-INF/lib/myfile.txt
中放置要读取的文件并访问该文件 - 或者您可以打开jar(/BotServlet/WEB-INF/lib/Server_BotServlet.jar
)并阅读您的清单。真的,这取决于你的最终目标是什么。