3

mvn tomcat:runWeb modulo で実行すると、このエラーが発生します。

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たところ、この Google の依存関係が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

この回答servlet-apiは依存関係を作成することを提案してprovidedいますが、所有していない依存関係内でこれを行うにはどうすればよいですか?

4

1 に答える 1

4

サードパーティの依存関係の 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>

重要:

  1. <exclusions>正しくご使用ください<dependency>。そうしないと効果がありません。
  2. <exclusions><dependency>ネストされたすべての依存関係を含む、のサブツリー全体に対して機能します。<dependency>望ましくないjarをもたらすPOMのトップレベルを見つけて、そこで使用し<exclusions>てください。
  3. 同じ望ましくない jar が、複数の依存関係を介して発生する可能性があります。1 か所で除外した後、依存関係ツリーを更新し、望ましくない jar が他の依存関係を経由して来るかどうかを確認します。はいの場合は、他の場所でも除外します。
于 2013-09-29T13:26:06.333 に答える