java - IncompatibleClassChangeError : Implementing class in struts 2. 5.13

标签 java struts2

项目中使用了以下struts jar:

activation.jar,  asm-5.2.jar,  asm-commons-5.2.jar ,asm-tree-5.2.jar, commons-beanutils-1.9.2.jar , commons-collections-3.2.2.jar, commons-fileupload-1.3.3.jar ,  commons-io-2.5.jar , commons-lang-2.5.jar, commons-lang3-3.6.jar,  commons-logging-1.1.3.jar, commons-logging-api-1.1.jar , freemarker-2.3.23.jar,  javassist-3.20.0-GA.jar , javax.servlet.jar  ,log4j-api-2.8.2.jar mail.jar , ognl-3.1.15.jar, struts2-convention-plugin-2.5.13.jar , struts2-core-2.5.13.jar,  struts2-rest-plugin-2.5.13.jar ,  xstream-1.4.10.jar,  xwork-core-2.3.34.jar

系统上还安装了 tomcat 8.5 和 java 8。

启动后出现以下错误,请有任何想法的人!!!

04-Dec-2017 11:17:29.066 SEVERE [localhost-startStop-1] org.apache.catalina.core.StandardContext.filterStart Exception starting filter [struts2]
Unable to load configuration. - bean - jar:file:/apache-tomcat-8.5.23/webapps/WebTool/WEB-INF/lib/struts2-core-2.5.13.jar!/struts-default.xml:137:154
        at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:512)
        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:285)
        at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:266)
        at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:108)
        at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4591)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5233)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:752)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:728)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)
        at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1144)
        at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1878)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
    Caused by: Unable to load bean: type:com.opensymphony.xwork2.TextProviderFactory class:com.opensymphony.xwork2.StrutsTextProviderFactory - bean - jar:file:/apache-tomcat-8.5.23/webapps/WebTool/WEB-INF/lib/struts2-core-2.5.13.jar!/struts-default.xml:137:154
        at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.register(XmlConfigurationProvider.java:247)
        at org.apache.struts2.config.StrutsXmlConfigurationProvider.register(StrutsXmlConfigurationProvider.java:98)
        at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:240)
        at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:67)
        ... 21 more
Caused by: java.lang.IncompatibleClassChangeError: Implementing class
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2283)
        at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:811)
        at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1260)
        at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1119)
        at com.opensymphony.xwork2.util.ClassLoaderUtil.loadClass(ClassLoaderUtil.java:144)
        at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.register(XmlConfigurationProvider.java:218)
        ... 24 more

Any help will be appreciated.

这是我的 web.xml 结构:

我已经将过滤器调度程序更新为最新的声明

org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>WebTool</display-name>
  <welcome-file-list>
    <welcome-file>Home.html</welcome-file>
  </welcome-file-list>

  <resource-ref>
      <description>DB Connection</description>
      <res-ref-name>jdbc/WEBTOOLDB</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
  </resource-ref>

    <filter>
      <filter-name>struts2</filter-name>
      <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
      <init-param>
            <param-name>actionPackages</param-name>
            <param-value>com.webtool.ktt.servlet</param-value>
      </init-param>
  </filter>

  <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

</web-app>

最佳答案

遇到了同样的问题。原来是由于将 struts2-core (v2.5.14.1) 和 xwork-core (2.3.34) 作为依赖项。

struts2-core.jar 自 v2.5 以来包含 TextProviderFactory 作为接口(interface),但 xwork-core 具有相同类的旧版本作为真正的类。

删除 xwork-core 依赖项为我解决了这个问题。

关于java - IncompatibleClassChangeError : Implementing class in struts 2. 5.13,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47650009/

相关文章:

java - 为什么我的 native C++ 代码在 Android 上的运行速度比 Java 慢得多?

java - wsimport : unable to rename the package name

java - Struts 2(版本 2.3.28)只接受注册语言环境

java - iframe 不显示 struts 操作类中的对象

java - 从表单数据填充struts2中的List<String>

javascript - 禁用在 IE8 中有效,但在较低版本的 IE 中无效

java - 如何从android中的 ListView 中获取整数值?

java - 如何在 Java 中实现这个(带下拉菜单的菜单栏)?

java - CSV 中的 LinkedHashMap 未获取所有条目

java - 找不到 Struts 2 模板