gpt4 book ai didi

maven - tomcat 插件中未加载 Servlet api

转载 作者:行者123 更新时间:2023-11-28 23:39:40 25 4
gpt4 key购买 nike

我试图通过 tomcat7-maven-plugin (tomcat7:deploy) 在 tomcat7 上部署一个 Spring 应用程序,但是当执行该应用程序时,我得到这个错误:

INFO: validateJarFile(C:\Program Files (x86)\apache-tomcat-7.0.47\webapps\MyApp\WEB-
INF\lib\servlet-api-2.5-6.1.11.jar) - jar not loaded. See Servlet Spe c 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class 16-gen-2014 14.18.25 org.apache.catalina.core.StandardContext startInternal GRAVE: Error listenerStart 16-gen-2014 14.18.25 org.apache.catalina.core.StandardContext startInternal GRAVE: Context [/MyApp] startup failed due to previous errors

如果我通过 jetty:run 使用 jetty,一切正常。

这是我的插件配置

        <!-- To launch embded jetty server -->
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>${maven-jetty-plugin.version}</version>
<configuration>
<webAppConfig>
<contextPath>/${project.name}</contextPath>
</webAppConfig>
</configuration>
</plugin>
<!-- To launch embded tomcat server -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.1</version>
<configuration>
<url>http://localhost:8081/manager/text</url>
<server>my-tomcat</server>
<path>/MyApp</path>
</configuration>
</plugin>

虽然这些是我的依赖项:

    <!-- Spring dependencies -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<exclusions>
<!-- Exclude Commons Logging in favor of SLF4j -->
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>

<!-- default j2ee dependencies -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>${servlet-api.version}</version>
<scope>provided</scope>
</dependency>

我该如何解决?

最佳答案

错误信息的重要部分是

信息:validateJarFile(C:\Program Files (x86)\apache-tomcat-7.0.47\webapps\MyApp\WEB-INF\lib\servlet-api-2.5-6.1.11.jar)- jar 没有加载。请参阅 Servlet 规范 2.3,第 9.7.2 节。违规类:javax/servlet/Servlet.class

这意味着您正在尝试加载 servlet-api-2.5-6.1.11.jar 作为包含 javax.servlet.Servlet< 定义的 Web 应用程序的一部分。上述规范的第 9.7.2 节指出,容器用来加载 servlet 的类加载器不得 WAR 覆盖 J2SE 或 Java servlet API 类。


在我的例子中,我在 pom.xml 文件中使用以下行构建 war 文件时设法排除了某些 jar:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1-alpha-2</version>
<configuration>
...
<packagingExcludes>WEB-INF/lib/javax.servlet-*.jar</packagingExcludes>
...
</configuration>
</plugin>

关于maven - tomcat 插件中未加载 Servlet api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21163275/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com