当我运行时,我收到此错误mvn tomcat:run
在我的网络模数中。
SEVERE: Servlet /web threw load() exception
java.lang.ClassCastException: org.springframework.web.servlet.DispatcherServlet cannot be cast to javax.servlet.Servlet
当我将依赖项添加到我拥有的另一个模数时,就会发生问题,特别是因为其他模数包含com.google.gdata:core
依赖性。我跑了mvn dependency:tree
我看到这个谷歌依赖有servlet-api
沿着它的依赖树,所以我认为这就是问题所在。但我不知道如何解决它。
| \- com.google.gdata:core:jar:1.47.1:compile
| +- com.google.guava:guava:jar:13.0.1:compile
| +- com.google.oauth-client:google-oauth-client-jetty:jar:1.11.0-beta:compile
| | +- com.google.oauth-client:google-oauth-client-java6:jar:1.11.0-beta:compile
| | | \- com.google.oauth-client:google-oauth-client:jar:1.11.0-beta:compile
| | | \- com.google.http-client:google-http-client:jar:1.11.0-beta:compile
| | | +- org.apache.httpcomponents:httpclient:jar:4.0.3:compile
| | | | \- org.apache.httpcomponents:httpcore:jar:4.0.1:compile
| | | \- xpp3:xpp3:jar:1.1.4c:compile
| | \- org.mortbay.jetty:jetty:jar:6.1.26:compile
| | +- org.mortbay.jetty:jetty-util:jar:6.1.26:compile
| | \- org.mortbay.jetty:servlet-api:jar:2.5-20081211:compile
| +- com.google.code.findbugs:jsr305:jar:1.3.7:compile
| \- javax.mail:mail:jar:1.4:compile
| \- javax.activation:activation:jar:1.1:compile
This answer https://stackoverflow.com/questions/11704069/servletdispatcher-cannot-be-cast-to-javax-servlet-servlet-exception-in-my-spring建议制作servlet-api
依赖性provided
,但是如何在我不拥有的依赖项中执行此操作?
您无法更改第 3 方依赖项的 POM。但是你可以排除其依赖项.
<dependency>
<groupId>.....</groupId>
<artifactId>.....</artifactId>
<version>.....</version>
<scope>compile</scope>
<exclusions>
<exclusion>
<groupId>org.mortbay.jetty</groupId>
<artifactId>servlet-api</artifactId>
</exclusion>
</exclusions>
</dependency>
重要的:
- Use
<exclusions>
在正确的<dependency>
。否则不会有任何效果。
-
<exclusions>
适用于整个子树<dependency>
,包括其所有嵌套依赖项。只要找到顶层即可<dependency>
在你的 POM 中带来了不需要的 jar 和使用<exclusions>
there.
- 同一个不需要的 jar 可能来自多个依赖项。在一处排除它之后,刷新依赖关系树,并检查不需要的 jar 是否通过其他依赖关系而来。如果是,则在其他地方也将其排除。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)