启动错误:java.lang.CompatibileClassChangeError:org/apache/struts2/convention/DefaultClassFinder$InfoBuildingVisitor

启动错误:java.lang.CompatibileClassChangeError:org/apache/struts2/convention/DefaultClassFinder$InfoBuildingVisitor,struts2,struts2-convention-plugin,Struts2,Struts2 Convention Plugin,我有一个Struts2应用程序,最初是基于XML的,但现在我第一次引入了基于注释的操作,应用程序在启动时就坏了 给定以下操作映射,在应用程序启动时,我得到了错误 java.lang.InstantiationError: com.opensymphony.xwork2.util.finder.ClassFinder at org.apache.struts2.convention.PackageBasedActionConfigBuilder.findActions(PackageBas

我有一个Struts2应用程序,最初是基于XML的,但现在我第一次引入了基于注释的操作,应用程序在启动时就坏了

给定以下操作映射,在应用程序启动时,我得到了错误

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)
这里有一个类似的问题,但没有人回答,

使用的库

  • struts2-convention-plugin-2.3.14.3.jar
  • struts2-core-2.5.10.1.jar
  • struts2-json-plugin-2.5.10.1.jar
  • struts2-spring-plugin-2.5.10.1.jar
  • struts2-tiles-plugin-2.5.10.1.jar
  • xwork-core-2.1.6.jar
更新:我认为约定插件JAR2.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]
java.lang.CompatibileClassChangeError:org/apache/struts2/convention/DefaultClassFinder$InfoBuildingVisitor
在org.apache.struts2.convention.DefaultClassFinder.readClassDef(DefaultClassFinder.java:459)~[struts2-convention-plugin-2.5.10.1.jar:2.5.10.1]
在org.apache.struts2.convention.DefaultClassFinder.(DefaultClassFinder.java:90)[struts2-convention-plugin-2.5.10.1.jar:2.5.10.1]
位于org.apache.struts2.convention.PackageBasedActionConfigBuilder.buildClassFinder(PackageBasedActionConfigBuilder.java:397)[struts2-convention-plugin-2.5.10.1.jar:2.5.10.1]
位于org.apache.struts2.convention.PackageBasedActionConfigBuilder.findActions(PackageBasedActionConfigBuilder.java:379)[struts2-convention-plugin-2.5.10.1.jar:2.5.10.1]
位于org.apache.struts2.convention.PackageBasedActionConfigBuilder.buildActionConfigs(PackageBasedActionConfigBuilder.java:335)[struts2-convention-plugin-2.5.10.1.jar:2.5.10.1]
位于org.apache.struts2.convention.ClasspathPackageProvider.loadPackages(ClasspathPackageProvider.java:53)[struts2-convention-plugin-2.5.10.1.jar:2.5.10.1]
在com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:199)[struts2-core-2.5.10.1.jar:2.5.10.1]

解决方案该解决方案是添加asm5.xjar,它是Struts注释约定JAR的依赖项。我们使用的是ASM3.3。我添加了ASM核心、-Common、-Tree版本5.1 JARs。

Struts2使用ASM 5x作为约定插件。检查您的类路径并确保您有适当版本的ASM JAR。

struts2约定插件2.5.10.1具有编译依赖项


org.apache.commons
commons-lang3
3.4
org.ow2.asm
asm
5.1
org.ow2.asm
公共空间
5.1


注意:如果您不需要
asm
asm commons
依赖项,可以降级到Struts 2.5.5。

应该是注释。