用Servlet读取罐子里面的清单文件

时间:2014-04-02 01:24:55

标签: java servlets ant jar manifest.mf

我想我犯了一个简单的错误,但也许你们可以帮助我。我有一个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所述的方法。

1 个答案:

答案 0 :(得分:1)

Servlet上下文/BotServlet/不在/BotServlet/WEB-INF/lib/Server_BotServlet.jar文件中。您可以在/WEB-INF/lib/myfile.txt中放置要读取的文件并访问该文件 - 或者您可以打开jar(/BotServlet/WEB-INF/lib/Server_BotServlet.jar)并阅读您的清单。真的,这取决于你的最终目标是什么。