Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.lang.ClassNotFoundException:org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter,即使配置看起来很好_Java_Maven_Struts2_Struts_Struts 1 - Fatal编程技术网

java.lang.ClassNotFoundException:org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter,即使配置看起来很好

java.lang.ClassNotFoundException:org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter,即使配置看起来很好,java,maven,struts2,struts,struts-1,Java,Maven,Struts2,Struts,Struts 1,我知道在StackOverflow上有很多类似的问题,但我想我已经仔细检查了每一个问题,并尝试了所有建议的问题,但没有一个有效 我正在尝试将一个应用程序从struts 1迁移到struts 2,但为了使事情更简单,我首先尝试迁移struts1示例应用程序,以便对这些步骤有信心。我所说的示例应用程序是位于的apps文件夹中的应用程序 因此,这是我当前的配置: 马文 爪哇8 雄猫9 Struts 1.4 Struts 2.5 到目前为止,我所做的步骤是: 在pom.xml文件中添加struts2

我知道在StackOverflow上有很多类似的问题,但我想我已经仔细检查了每一个问题,并尝试了所有建议的问题,但没有一个有效

我正在尝试将一个应用程序从struts 1迁移到struts 2,但为了使事情更简单,我首先尝试迁移struts1示例应用程序,以便对这些步骤有信心。我所说的示例应用程序是位于的apps文件夹中的应用程序

因此,这是我当前的配置:

  • 马文
  • 爪哇8
  • 雄猫9
  • Struts 1.4
  • Struts 2.5
到目前为止,我所做的步骤是:

  • 在pom.xml文件中添加struts2 corelog4j2依赖项,并通过maven进行安装
  • 根据,将web.xml文件更改为包含struts 2
  • 在类路径中创建struts.xml文件,当前该文件不包含任何操作,只包含结构
  • 上述文件如下所示:

    web.xml(节选)

     <filter>
            <filter-name>struts2</filter-name>
            <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
     </filter>
     <filter-mapping>
            <filter-name>struts2</filter-name>
            <url-pattern>/*</url-pattern>
     </filter-mapping>
    
     <filter-mapping>
            <filter-name>struts2</filter-name>
            <url-pattern>*.action</url-pattern>
     </filter-mapping>
    
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
            "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
            "http://struts.apache.org/dtds/struts-2.5.dtd">
    <struts>
        <constant name="struts.enable.DynamicMethodInvocation" value="false"/>
        <constant name="struts.devMode" value="true"/>
    
        <package name="default" namespace="/" extends="struts-default">
    
        </package>
    
        <!-- Add addition packages and configuration here. -->
    </struts>
    
       <dependency>
           <groupId>org.apache.struts</groupId>
           <artifactId>struts2-core</artifactId>
           <version>2.5.22</version>
           <scope>compile</scope>
       </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.12.1</version>
        </dependency>
    
    
    支柱2
    org.apache.struts2.dispatcher.filter.strutspreadexecutefilter
    支柱2
    /*
    支柱2
    *.行动
    
    struts.xml

     <filter>
            <filter-name>struts2</filter-name>
            <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
     </filter>
     <filter-mapping>
            <filter-name>struts2</filter-name>
            <url-pattern>/*</url-pattern>
     </filter-mapping>
    
     <filter-mapping>
            <filter-name>struts2</filter-name>
            <url-pattern>*.action</url-pattern>
     </filter-mapping>
    
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
            "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
            "http://struts.apache.org/dtds/struts-2.5.dtd">
    <struts>
        <constant name="struts.enable.DynamicMethodInvocation" value="false"/>
        <constant name="struts.devMode" value="true"/>
    
        <package name="default" namespace="/" extends="struts-default">
    
        </package>
    
        <!-- Add addition packages and configuration here. -->
    </struts>
    
       <dependency>
           <groupId>org.apache.struts</groupId>
           <artifactId>struts2-core</artifactId>
           <version>2.5.22</version>
           <scope>compile</scope>
       </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.12.1</version>
        </dependency>
    
    
    
    pom.xml(节选)

     <filter>
            <filter-name>struts2</filter-name>
            <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
     </filter>
     <filter-mapping>
            <filter-name>struts2</filter-name>
            <url-pattern>/*</url-pattern>
     </filter-mapping>
    
     <filter-mapping>
            <filter-name>struts2</filter-name>
            <url-pattern>*.action</url-pattern>
     </filter-mapping>
    
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
            "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
            "http://struts.apache.org/dtds/struts-2.5.dtd">
    <struts>
        <constant name="struts.enable.DynamicMethodInvocation" value="false"/>
        <constant name="struts.devMode" value="true"/>
    
        <package name="default" namespace="/" extends="struts-default">
    
        </package>
    
        <!-- Add addition packages and configuration here. -->
    </struts>
    
       <dependency>
           <groupId>org.apache.struts</groupId>
           <artifactId>struts2-core</artifactId>
           <version>2.5.22</version>
           <scope>compile</scope>
       </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.12.1</version>
        </dependency>
    
    
    org.apache.struts
    

    目标文件夹中的WEB-INF/lib文件夹如下所示:

    因此,我确信目标中存在所有必需的依赖项。尽管如此,我还是不断发现错误:

    org.apache.catalina.core.StandardContext filterStart 严重:启动过滤器时出现异常[struts2] java.lang.ClassNotFoundException:org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter

    我确信类
    org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
    存在,拼写正确,并且对于我使用的struts2版本是正确的,因为如果我在Java文件中导入该类,它将成功构建

    我知道这个问题很常见,我的请求听起来很愚蠢,但我确实检查了我在网上发现的关于这个问题的任何问题,没有一个解决方案有效


    我希望有人能给我一个提示。感谢您为Struts 2库提供的
    pom.xml
    条目:

       <dependency>
           <groupId>org.apache.struts</groupId>
           <artifactId>struts2-core</artifactId>
           <version>2.5.22</version>
           <scope>compile</scope>
       </dependency>
    
    
    org.apache.struts
    struts2型芯
    2.5.22
    编译
    
    如果您是通过Maven运行的(您应该这样做),您将需要它超过编译时间

    我会将依赖关系管理留给Maven来完成,而不会尝试手动完成,即使WEB-INF/lib映像已被截断(它至少缺少XWork依赖关系)