java 运行struts2应用程序时出现HTTP状态404

new9mtju  于 2023-01-11  发布在  Java
关注(0)|答案(1)|浏览(158)

我在我的程序中使用Java SE-11,struts 2.5.29,tomcat 10.0.6。我尝试使用struts-2 framework创建一个小项目。我已经声明了web.xml中的所有过滤器,如www.example.com上提到struts.apache.org特定Struts版本。但我仍然无法成功执行我的程序。我认为有一些错误,无论是在jar文件或其他东西,我无法识别。
我已经尝试了老版本的Struts 2.3.27甚至老版本的tomcat 9,但它没有给我正确的结果.
下面是我的web.xmlstruts.xml代码,以供参考。

x一个月三个月一个月:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="https://jakarta.ee/xml/ns/jakartaee"
    xmlns:web="http://xmlns.jcp.org/xml/ns/javaee"
    xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd http://xmlns.jcp.org/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    id="WebApp_ID" version="5.0">
    <display-name>Strut2Implementation</display-name>

    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>

    <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>
</web-app>

一米四分一秒:

<struts>
    <package name="default" extends="struts-default">
        <action name="welcome" class="org.action.WelcomeAction">
            <result name="success">/success.jsp</result>
            <result name="failure">/error.jsp</result>
        </action>
    </package>
</struts>

我添加的jar是
通用文件加载-1.4
通用IO-2.6
通用项-lang 3 -3.8.1
通用语言-2.4
通用日志记录-1.2
freemarker-2.3.30
Java辅助程序-3.20.0
ognl-3.1.29
struts2-core-2.5.29
struts-dwr-plugin-2.5.29
外部工作-核心-2.2.3
xwork-jar.jar
我得到的错误是
SEVERE: Exception starting filter [struts2] java.lang.ClassCastException: class org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter cannot be cast to class jakarta.servlet.Filter

sg24os4d

sg24os4d1#

您在servlet容器上使用了不同的servlet版本。此版本与您使用的Struts版本不向后兼容。
参见Apache Tomcat Migration Gude
Tomcat 9.0.x和Tomcat 10.0.x之间有一个重大的突破性变化。规范API使用的Java包已从javax...更改为jakarta...。需要根据新的API重新编译Web应用程序。
Tomcat可以在部署时使用Apache Tomcat for Jakarta EE迁移工具将现有的Web应用程序从Java EE 8转换为Jakarta EE 9。Web应用程序应放置在Host legacyAppBase文件夹中(默认情况下名为webapps-javaee),它们将转换为Host appBase文件夹中的等效Jakarta EE Web应用程序(默认名称为webapps)。
或者,可以提前使用Apache Tomcat migration tool for Jakarta EE或任何类似的转换工具,以获得更快的部署时间和更精确的转换配置选项。

相关问题