未加载 jar。参见 Servlet Spec 2.3, section 9.7.2。违规类:javax/servlet/Servlet.class

2022-08-31 10:14:20

我正在运行一个Maven项目,这也是一个动态的Web项目。我已经在Maven中使用了所有Spring库。我创建了 ,但是当我启动我的Tomcat 7服务器时,我收到以下消息:web.xml

INFO: validateJarFile(C:\Users\mibvzd0\workspace\.metadata\.plugins\
org.eclipse.wst.server.core\tmp2\wtpwebapps\hapi_hl7\WEB-INF\lib\
servlet-api-2.4.jar) - jar not loaded.
See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class

我尝试从 中删除 servlet,但它不起作用。让我知道在我的情况下应该做什么。webapp/lib


答案 1

.jar文件的 servlet API 不得嵌入到 webapp 中,因为显然,容器的类路径中已经包含这些类:它实现了此 jar 中包含的接口。

依赖项应该在 Maven pom 中的范围中,而不是默认范围内:providedcompile

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
</dependency>

答案 2

当 servlet api jar 文件已加载到容器中并尝试从目录再次加载它时,您会收到此警告消息。lib

Servlet规范说你不允许在你的webapps目录中有servlet.jarlib

  • 只需从目录中删除即可摆脱警告消息。servlet.jarlib
  • 如果在目录中找不到该 jar,请扫描生成路径并删除该 jar。lib

C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\project\WEB-INF\lib

如果您正在运行一个 maven 项目,请将依赖项更改为 pom 中的作用域.xml因为容器本身已经提供了 servlet jar。javax.servlet-apiprovided


推荐