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

问题描述 投票:0回答:1

我知道在StackOverflow上有很多类似的问题,但是我想我遍历了每个问题,并尝试了所有建议的问题,但没有一个起作用。

我正在尝试将应用程序从struts 1迁移到struts 2,但是为了简化起见,我首先尝试迁移struts1示例应用程序,以使自己对这些步骤充满信心。我正在谈论的示例应用程序是this repositoryapps文件夹中的那些。

所以,这是我当前的配置:

  • 行家
  • Java 8
  • Tomcat 9
  • Struts 1.4
  • Struts 2.5
  • 到目前为止,我已经完成的步骤是:

    文件中添加[[
  1. log4j2依赖项,并通过maven安装它们根据official documentation,将web.xml
  2. 文件更改为包括struts 2。在类路径中创建一个
  3. struts.xml
  4. 文件,当前该文件不包含任何操作,仅包含结构。
    上述文件看起来像这样:
  • 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>

    struts.xml:

    <?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>
    

    pom.xml(摘录)

       <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>
    

    最后,Maven依赖项部分看起来像这样:

    enter image description here
    虽然

    target

    文件夹中的

    WEB-INF / lib

    文件夹看起来像这样:

    enter image description here

    因此,我确定目标中存在所有必需的依赖项。尽管如此,我仍然收到错误消息:

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

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

    [我知道这个问题很普遍,我的要求听起来很愚蠢,但是我已经从网上检查了我在网上发现的有关此问题的任何问题,但没有一种解决方案有效。

    我希望有人能给我提示。谢谢

    我知道StackOverflow上有很多类似的问题,但是我想我经历了每个问题并尝试了所有建议的问题,但是没有一个起作用。我正在尝试迁移...

  • java maven struts2 struts struts-1
    1个回答
    0
    投票
    如果您正在通过Maven运行(应该使用),则在编译时就需要它。

    即使WEB-INF / lib映像已被截断(至少缺少XWork依赖性),我仍将依赖关系管理交给Maven,而不是尝试手动进行。

    © www.soinside.com 2019 - 2024. All rights reserved.