2

Struts 2 を Zero Configuration、Spring、Hibernate、Maven と統合しようとしています。

しかし、私が統合に欠けているものがあるに違いないと私が思うことは、Mavenの構成に関連しているに違いありませんPom.xml:

<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-core</artifactId>
    <version>2.1.8.1</version>
</dependency>

<!-- Struts 2 + Spring plugins -->
<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-spring-plugin</artifactId>
    <version>2.1.8.1</version>
</dependency>

<!-- MySQL database driver -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.9</version>
</dependency>

<!-- Spring framework --> 
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring</artifactId>
    <version>2.5.6</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>2.5.6</version>
</dependency>

<!-- Hibernate core -->
<dependency>
    <groupId>asm</groupId>
    <artifactId>asm-all</artifactId>
    <version>3.3</version>
</dependency>
<dependency>
    <groupId>asm</groupId>
    <artifactId>asm</artifactId>
    <version>3.3</version>
</dependency>
    <dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>3.6.7.Final</version>
</dependency>

<!-- Hibernate core library dependency start -->

<!-- Hibernate core library dependency end -->

<!-- Hibernate query library dependency start -->
<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-convention-plugin</artifactId>
    <version>2.1.8.1</version>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.0.1</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.15</version>
</dependency>

この構成を使用するとエラーが発生するため

java.lang.NoSuchMethodError: com.opensymphony.xwork2.util.finder.UrlSet.<init>(Lcom/opensymphony/xwork2/util/finder/ClassLoaderInterface;Ljava/util/Set;)V

そして、opensymphony XWork libaray の代わりに、次の依存関係を使用します

<dependency>
    <groupId>org.apache.struts.xwork</groupId>
    <artifactId>xwork-core</artifactId>
    <version>2.3.8</version>
</dependency> 

この例外がスローされます

Caused by: Unable to load configuration. - [unknown location]
    at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:58)
4

1 に答える 1

1

Struts2 のバージョンをアップグレードする場合、アプリケーションが必要とするライブラリをターゲット バージョンに更新する必要があります。libStruts2 の各ディストリビューションには、ディストリビューションのバージョンと互換性のあるフォルダ内の対応するライブラリ セットが付属しています。Maven を使用して依存関係を解決およびフェッチする場合は、アーティファクトを検討する必要がありますstruts2-core

<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-core</artifactId>
    <version>2.3.8</version>
</dependency>

このアーティファクトに必要なすべての依存関係、個別に追加する必要があるプラグインなどの他の依存関係をフェッチします。プラグインを対象とする同じバージョンを使用します。たとえば、コンベンションプラグインを追加するには

<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-convention-plugin</artifactId>
    <version>2.3.8</version>
</dependency>

私が選択した対象のバージョン番号は 2.3.8 ですが、対応するアーティファクトを依存関係に追加してバージョンを個別にアップグレードする必要がある他の機能、つまり Hibernate や Spring と互換性がない可能性があります。

最後に最も時間がかかるのは、プロジェクトのソース コードの変更、新しい DTD に応じた構成ファイルの更新、API の変更、非推奨の修正です。この目的のために、リリース ノートを読むことを検討してください。


Maven プロジェクトの開発例: Create Struts 2 Web Application Using Maven To Manage Artifacts and To Build The Applicationも参照してください。

于 2013-07-24T09:31:50.047 に答える