xwork和xwork-core的冲突

问题描述:

我一直在尝试将Struts 2与零配置,Spring,Hibernate和Maven集成。xwork和xwork-core的冲突

但是,我认为必须有一些东西,我在集成的思念,它必须与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) 
+1

查看[迁移指南](http://struts.apache.org/release/2.3.x/docs/migration-guide.html) –

+0

在那里看到什么? – user2607985

+1

你不能使用任意版本的xwork;请显示mvn依赖项的输出:没有xwork的不正确版本。 –

当您升级Struts2的版本,你必须更新库需要您的应用程序到目标版本。 Struts2的每个发行版都提供了lib文件夹中与发行版本兼容的相应库集。如果您使用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更改和修订弃用更新配置文件。为此,请考虑阅读release notes


另请参阅example of developing a maven project

+0

你可以upvote这个答案。 –