我在我的程序中使用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.xml
和struts.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
1条答案
按热度按时间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
),它们将转换为HostappBase
文件夹中的等效Jakarta EE Web应用程序(默认名称为webapps
)。或者,可以提前使用Apache Tomcat migration tool for Jakarta EE或任何类似的转换工具,以获得更快的部署时间和更精确的转换配置选项。