2017-07-03 45 views
1

我有一个Struts2应用程序,最初是基于XML的,但现在我第一次引入了基于Annotation的操作,应用在启动时崩溃了。

考虑下面的动作映射,对应用程序的启动,我得到的错误

java.lang.InstantiationError: com.opensymphony.xwork2.util.finder.ClassFinder 
    at org.apache.struts2.convention.PackageBasedActionConfigBuilder.findActions(PackageBasedActionConfigBuilder.java:390) 
    at org.apache.struts2.convention.PackageBasedActionConfigBuilder.buildActionConfigs(PackageBasedActionConfigBuilder.java:347) 
    at org.apache.struts2.convention.ClasspathPackageProvider.loadPackages(ClasspathPackageProvider.java:53) 
    at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:199) 
    at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:67) 
    at org.apache.struts2.dispatcher.Dispatcher.getContainer(Dispatcher.java:906) 
    at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:445) 
    at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:486) 
    at org.apache.struts2.dispatcher.InitOperations.initDispatcher(InitOperations.java:75) 
    at org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:63) 
    at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:279) 

有此类似的问题,但没有人回应, Issue with Struts2 Filter Exception

用于图书馆

  • struts2-convention-plugin-2.3.14.3.jar
  • struts2的核 - 2.5.10.1.jar
  • struts2的-JSON-插件-2.5.10.1.jar
  • struts2的 - 弹簧 - 插件-2.5.10.1.jar
  • struts2的瓷砖-插件-2.5。 10.1.jar
  • XWork的核心 - 2.1.6.jar

更新:我认为公约-插件-JAR 2.3.14.3与其他2.5.10.1那些不兼容的,所以我下载: struts2-convention-plugin-2.5.10.1.jar

现在在启动时得到

java.lang.IncompatibleClassChangeError: org/apache/struts2/convention/DefaultClassFinder$InfoBuildingVisitor 
    at org.apache.struts2.convention.DefaultClassFinder.readClassDef(DefaultClassFinder.java:459) ~[struts2-convention-plugin-2.5.10.1.jar:2.5.10.1] 
    at org.apache.struts2.convention.DefaultClassFinder.<init>(DefaultClassFinder.java:90) [struts2-convention-plugin-2.5.10.1.jar:2.5.10.1] 
    at org.apache.struts2.convention.PackageBasedActionConfigBuilder.buildClassFinder(PackageBasedActionConfigBuilder.java:397) [struts2-convention-plugin-2.5.10.1.jar:2.5.10.1] 
    at org.apache.struts2.convention.PackageBasedActionConfigBuilder.findActions(PackageBasedActionConfigBuilder.java:379) [struts2-convention-plugin-2.5.10.1.jar:2.5.10.1] 
    at org.apache.struts2.convention.PackageBasedActionConfigBuilder.buildActionConfigs(PackageBasedActionConfigBuilder.java:335) [struts2-convention-plugin-2.5.10.1.jar:2.5.10.1] 
    at org.apache.struts2.convention.ClasspathPackageProvider.loadPackages(ClasspathPackageProvider.java:53) [struts2-convention-plugin-2.5.10.1.jar:2.5.10.1] 
    at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:199) [struts2-core-2.5.10.1.jar:2.5.10.1] 

对该溶液添加ASM 5.x的JAR文件它们是Struts的JAR公约注解的依赖。我们使用的是ASM 3.3。我添加了ASM-Core,-Common, - 版本5.1 JAR。

回答

1

struts2的会展插件2.5.10.1具有编译依赖

<dependency> 
    <groupId>org.apache.commons</groupId> 
    <artifactId>commons-lang3</artifactId> 
    <version>3.4</version> 
</dependency> 
<dependency> 
    <groupId>org.ow2.asm</groupId> 
    <artifactId>asm</artifactId> 
    <version>5.1</version> 
</dependency> 
<dependency> 
    <groupId>org.ow2.asm</groupId> 
    <artifactId>asm-commons</artifactId> 
    <version>5.1</version> 
</dependency> 

注:如果你不需要asmasm-commons依赖性您可以降级到2.5.5的Struts。

0

Struts2使用ASM 5x作为惯例插件。检查你的classpath并确保你有适当版本的ASM jar。

+0

这是它,谢谢 –

+0

它应该是评论。 –

+0

这不提供问题的答案。要批评或要求作者澄清,请在其帖子下方留言。 - [来自评论](/ review/low-quality-posts/16729305) – TobiMcNamobi