未找到META-INF /资源中的资源并返回404

时间:2012-06-26 21:09:56

标签: resources http-status-code-404 meta

我的WEB-INF / lib目录中有一个jar文件。在那个jar里面是一个META-INF / resources目录,里面有一个文件(image.jpg)。据我了解servlet 3.0 API,当我在Tomcat 7下部署它作为我的Web应用程序的一部分时,我应该可以去

http://host/context/image.jpg 

并查看从jar中加载的图像。但相反,我得到404错误。就好像servlet_api没有从我的jar中加载资源,即使文档说它应该。

我做错了什么?是否需要在我的web.xml文件中放置一个字段,告诉tomcat加载这些资源并将它们提供给Web浏览器?

2 个答案:

答案 0 :(得分:5)

jar的构建方式是正确的。 Tomcat 7附带了Servlet 3.0 jar,但除非web.xml明确声明它是3.0版本,否则它不会从jar中提供资源。 Tomcat不会假设您需要Servlet 3.0功能。

在您的web.xml中,您的网络应用标记需要像这样开始:

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0">

请注意对3.0版的引用

只要您指定Web应用程序是3.0版,您就可以访问Servlet 3.0功能。

答案 1 :(得分:2)

再见,它可以帮助某人。

有人在他们的catalina.properties中制作了

tomcat.util.scan.StandardJarScanFilter.jarsToSkip=*

加快Tomcat的启动时间。

如果我在Tomcat 9上执行此操作,则jar中的资源对我来说是无法访问的。我不得不例外:

tomcat.util.scan.StandardJarScanFilter.jarsToScan = libraryWithResources.jar,....

问题消失了。