1

私は最近、Struts2/Spring/Hibernate アプリケーションのいくつかの依存関係をアップグレードしようと試み始めましたが、これは数年前のものでした。主に @Enumerated アノテーションを取得するためです。POM は途中できれいになっていきます。これは良い副作用です。

すべてのコードがコンパイルされ、単体テストはパスしますが、サーバーは起動しません。

「原因: java.lang.IncompatibleClassChangeError: クラスの実装中」

エラーメッセージ。

依存関係のバージョンの不一致を追跡することについて話しているいくつかのスレッドをたどりました。多くの場合、2 つのバージョンの hibernate を取得しているようです。私はその問題を抱えているとは思わない:

[INFO] [snip MyProjectName]
[INFO] \- org.hibernate:hibernate-entitymanager:jar:3.5.6-Final:compile
[INFO]    +- org.hibernate:hibernate-core:jar:3.5.6-Final:compile
[INFO]    \- org.hibernate:hibernate-annotations:jar:3.5.6-Final:compile
[INFO]       \- org.hibernate:hibernate-commons-annotations:jar:3.2.0.Final:compile

最初は 3.2.0.Final 参照が原因だと思っていましたが、さらに調査すると、レガシーのための単なる空のプレースホルダー アーティファクトのように聞こえます。

ただし、私の春の依存関係が問題だと思いますが、何を修正すればよいか、または別の赤いニシンを見ているかどうかはわかりません。

[INFO] [snip MyProjectName]
[INFO] +- org.springframework:org.springframework.orm:jar:3.1.1.RELEASE:compile
[INFO] |  +- org.springframework:org.springframework.jdbc:jar:3.1.1.RELEASE:compile
[INFO] |  \- org.springframework:org.springframework.transaction:jar:3.1.1.RELEASE:compile
[INFO] +- org.springframework:org.springframework.web:jar:3.1.1.RELEASE:compile
[INFO] |  \- org.springframework:org.springframework.aop:jar:3.1.1.RELEASE:compile
[INFO] +- org.springframework:org.springframework.beans:jar:3.1.1.RELEASE:compile
[INFO] |  \- org.springframework:org.springframework.asm:jar:3.1.1.RELEASE:compile
[INFO] +- org.springframework:org.springframework.context:jar:3.1.1.RELEASE:compile
[INFO] |  \- org.springframework:org.springframework.expression:jar:3.1.1.RELEASE:compile
[INFO] +- org.springframework:org.springframework.core:jar:3.1.1.RELEASE:compile
[INFO] \- org.apache.struts:struts2-spring-plugin:jar:2.2.3.1:compile
[INFO]    +- org.springframework:spring-beans:jar:2.5.6:compile
[INFO]    +- org.springframework:spring-core:jar:2.5.6:compile
[INFO]    +- org.springframework:spring-context:jar:2.5.6:compile
[INFO]    \- org.springframework:spring-web:jar:2.5.6:compile

2つの問題が考えられると思います

  1. struts2-spring-plugin は古いバージョンの spring を取り込みますが、これまでに見つけたすべての Web リソースは、struts2-spring-plugin が新しいバージョンの spring で動作するはずだと述べています。ここで何か間違ったことをしていますか?プラグインの他の新しいバージョンを試してみることができませんでした。

  2. spring の新しいバージョンを見つけるために、ERB spring リポジトリに切り替える必要があったため、artifactIds は 2 つの間で一致しません。Spring の直接的な依存関係は org.springframework:org.springframe.{component} ですが、間接は org.springframework:spring-{component} です。これは問題ですか?ERB スプリング リポジトリで struts2-spring-plugin を探してみましたが、ホストされていないため、artifactId 命名スキームに一致するバージョンを見つけることができないと思います。

上記の両方が赤いニシンである場合に備えて、pom の完全な依存関係セクションを次にリストします。問題を解決するために使用すべき他のツール/調査はありますか? ありがとうございました。

<dependencies>
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.4</version>
    <scope>test</scope>
  </dependency>
  <dependency>
    <groupId>org.easymock</groupId>
    <artifactId>easymockclassextension</artifactId>
    <version>3.0</version>
    <scope>test</scope>
  </dependency>
  <dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>r07</version>
  </dependency>
  <dependency>
    <groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
    <version>1.4.1</version>
  </dependency>
  <dependency>
    <groupId>org.dbunit</groupId>
    <artifactId>dbunit</artifactId>
    <version>2.2</version>
    <scope>test</scope>
  </dependency>
  <dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <version>3.5.6-Final</version>
  </dependency>
  <dependency>
    <groupId>postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>9.1-901.jdbc3</version>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>org.springframework.orm</artifactId>
    <version>3.1.1.RELEASE</version>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>org.springframework.web</artifactId>
    <version>3.1.1.RELEASE</version>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>org.springframework.beans</artifactId>
    <version>3.1.1.RELEASE</version>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>org.springframework.context</artifactId>
    <version>3.1.1.RELEASE</version>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>org.springframework.core</artifactId>
    <version>3.1.1.RELEASE</version>
  </dependency>
  <dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.14</version>
  </dependency>
  <dependency>
    <groupId>commons-collections</groupId>
    <artifactId>commons-collections</artifactId>
    <version>3.1</version>
  </dependency>
  <dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-spring-plugin</artifactId>
    <version>2.2.3.1</version>
  </dependency>
  <dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-core</artifactId>
    <version>2.2.3.1</version>
  </dependency>
  <dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-config-browser-plugin</artifactId>
    <version>2.2.3.1</version>
  </dependency>
  <dependency>
   <groupId>org.apache.struts</groupId>
   <artifactId>struts2-json-plugin</artifactId>
   <version>2.2.3.1</version>
 </dependency>
 <dependency>
    <groupId>com.jgeppert.struts2.jquery</groupId>
    <artifactId>struts2-jquery-plugin</artifactId>
    <version>2.4.1</version>
 </dependency>
 <dependency>
    <groupId>com.jgeppert.struts2.jquery</groupId>
    <artifactId>struts2-jquery-grid-plugin</artifactId>
    <version>2.4.1</version>
 </dependency>
 <dependency>
    <groupId>com.jgeppert.struts2.jquery</groupId>
    <artifactId>struts2-jquery-richtext-plugin</artifactId>
    <version>2.4.1</version>
 </dependency>
<dependency>
  <groupId>org.freemarker</groupId>
  <artifactId>freemarker</artifactId>
  <version>2.3.16</version>
 </dependency>
 <dependency>
  <groupId>org.apache.struts</groupId>
  <artifactId>struts2-sitemesh-plugin</artifactId>
  <version>2.2.1</version>
 </dependency>
 <dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-convention-plugin</artifactId>
    <version>2.2.1</version>
 </dependency>    
 <dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>servlet-api</artifactId>
  <version>2.4</version>
  <scope>provided</scope>
 </dependency>
 <dependency>
  <groupId>taglibs</groupId>
  <artifactId>standard</artifactId>
  <version>1.1.2</version>
 </dependency>
 <dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>jstl</artifactId>
  <version>1.1.2</version>
 </dependency>
 <dependency>
  <groupId>concurrent</groupId>
  <artifactId>concurrent</artifactId>
  <version>1.3.4</version>
 </dependency>
 <dependency>
  <groupId>com.itextpdf</groupId>
  <artifactId>itextpdf</artifactId>
  <version>5.0.4</version>
 </dependency>
</dependencies>
4

1 に答える 1

1

必要なバージョンとは異なるバージョンを使用する場合は、struts 2 スプリング プラグインからスプリングの依存関係を除外する必要があります。

于 2012-02-19T10:02:38.010 に答える