首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行struts2应用程序时HTTP状态404

运行struts2应用程序时HTTP状态404
EN

Stack Overflow用户
提问于 2022-02-21 14:33:10
回答 1查看 118关注 0票数 1

我在我的程序中使用了Java 11,struts 2.5.29,Tomcat10.0.6。我正在尝试使用struts-2框架创建一个小项目。我已经为特定版本的Struts声明了web.xml中的所有过滤器,如struts.apache.org中提到的那样。不过,我还是无法成功地执行我的程序。我认为jar文件或其他一些我无法识别的错误是错误的。

我已经尝试过更早版本的Struts2.3.27,甚至是更旧版本的tomcat9,但它没有给出正确的结果。

这是我的web.xmlstruts.xml代码供参考。

web.xml**:**

代码语言:javascript
复制
<?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.xml**:**

代码语言:javascript
复制
<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>

我添加的罐子是

commons-fileupload-1.4 commons-io-2.6 commons-lang3-3.8.1 commons-lang-2.4 commons-logging-1.2 freemarker-2.3.30 javassist-3.20.0 ognl-3.1.29 struts2-core-2.5.29 struts-dwr-plugin-2.5.29 xwork-core-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

EN

回答 1

Stack Overflow用户

发布于 2022-02-22 10:27:19

在servlet容器上使用不同的servlet版本。此版本与您使用过的Struts版本不兼容。

请参阅Apache Tomcat迁移Gude

Tomcat 9.0.x与Tomcat 10.0.x之间有显著的断裂变化。规范API使用的Java已经从javax...更改为jakarta...。有必要根据新的API重新编译web应用程序。 Tomcat可以在部署时使用用于Jakarta的Apache迁移工具将现有的web应用程序从Java 8转换为Jakarta 9。为了利用这个特性,web应用程序应该放在主机legacyAppBase文件夹中(默认情况下名为webapps-javaee),并且它们将被转换为主机appBase文件夹中的一个等效的Jakarta应用程序(默认情况下名为webapps)。 另外,可以提前使用用于Jakarta的Apache迁移工具或任何类似的转换工具,以受益于更快的部署时间和更精确的转换配置选项。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71208072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档