当前位置: 首页 > news >正文

struts1.2升级struts2.5.30问题汇总

  1. 严重: 配置应用程序监听器[org.apache.struts2.tiles.StrutsTilesListener]错误

java.lang.NoClassDefFoundError: org/apache/tiles/web/startup/AbstractTilesListener

at java.lang.ClassLoader.defineClass1(Native Method)

at java.lang.ClassLoader.defineClass(ClassLoader.java:763)

----------注释掉web.xml中以下就解决

 <!--  <listener><listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class></listener> --><!--<context-param><!-- <param-name>definitions-config</param-name><param-name>org.apache.tiles.definition.DefinitionsFactory.DEFINITIONS_CONFIG</param-name><param-value>/WEB-INF/tiles.xml</param-value></context-param> -->

2 . java.lang.ClassCastException:

org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter cannot be cast to jakarta.servlet.Filterat org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:250)at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:103)

----需要下载Jakarta Servlet.jar包,因为tomcat10使用的不再是javax.servlet.jar包 -------直接切换到tomcat9即可

3.这个必须添加,否则启动tomcat会报错

<listener>

<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

从Struts2.1.3起废弃了ActionContextCleanUp过滤器,其相关功能在StrutsPrepareAndExecuteFilter实现,所以需要在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>

4. java.lang.NoSuchMethodError: ognl.SimpleNode.isEvalChain(Lognl/OgnlContext

--------因为ognl.jar冲突, 把低版本删除 使用struts-core.jar自带的就行

5. 但删除ognl.jar之后又报错:NoClassDefFoundError: ognl/PropertyAccessor

------下载新版本ognl.jar 再放回去解决

6. ClassNotFoundException: javassist.ClassPool

-----添加javassist-3.28.0-GA.jar 即可

7. java.lang.NoClassDefFoundError: ognl/DefaultMemberAccess

----不要使用新版的 ognl,从 3.2 开始,会报各种乱七八糟的错误。建议使用 3.1.x 版本的

8. java.lang.NoClassDefFoundError: freemarker/template/Version

----换freemarker.2.3.31.jar 解决

9. org.apache.jasper.JasperException: 无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri:[http://tiles.apache.org/tags-tiles]

-----jsp中引入了<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>,当访问这个页面时就会报上面这个错,

打开tiles-jsp-版本.jar在META-INF目录中找到了tld文件复制到WEB-INF目录下

10. org.apache.jasper.JasperException: 找不到URI:[/struts-tags]的taglib[s]

---同上, 打开struts2-core-2.5.30.jar找到了struts-tags.tld文件复制到WEB-INF目录下

11. javax.servlet.jsp.JspException: TilesContainer not initialized

-----添加以下到web.xml中即可

<context-param>
<param-name>org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG</param-name>
<param-value>/WEB-INF/tiles.xml</param-value>
</context-param>  
<listener>
<listener-class>org.apache.tiles.web.startup.TilesListener</listener-class>
</listener>

12. org.apache.tiles.definition.DefinitionsFactoryException: I/O Error reading definitions

-----tiles.xml的头文件版本不对,我的jar包是tiles-core-3.0.8.jar,头文件需要修改为以下(2.0修改成3.0即可):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tiles-definitions PUBLIC"-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN""tiles-config_3_0.dtd">

13. java.lang.NoClassDefFoundError: org/objectweb/asm/ClassVisitor

--------添加asm-3.3.1.jar即可

所有*struts*.xml配置的extends="struts-default"改成extends="json-default"

14. [main] ERROR org.apache.struts2.dispatcher.Dispatcher - Dispatcher initialization failed

com.opensymphony.xwork2.inject.DependencyException: com.opensymphony.xwork2.inject.ContainerImpl$MissingDependencyException: No mapping found for dependency [type=com.opensymphony.xwork2.factory.ConverterFactory, name='default'] in public void com.opensymphony.xwork2.ObjectFactory.setConverterFactory(com.opensymphony.xwork2.factory.ConverterFactory).

----升级后的struts中配置的action出错,

升级struts2.5.30之后struts.xml不再默认从src下面读了,而是需要放到resource文件夹下,否则无法访问action

15. struts.xml中配置的<result name="xxx" type="redirect-action">需要改成redirectAction

16. Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.springframework.orm.hibernate3.HibernateTransactionManager$HibernateTransactionObject

[http-nio-8080-exec-3] ERROR org.apache.struts2.dispatcher.DefaultDispatcherErrorHandler - Exception occurred during processing request: null

com.opensymphony.xwork2.XWorkException: null

---所有*validators.xml文件头的修改

原始内容:

<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator Config 1.0//EN" "" target="_blank">http://www.opensymphony.com/xwork/xwork-validator-config-1.0.dtd">

修改后内容:

<!DOCTYPEvalidatorsPUBLIC "-//ApacheStruts//XWork Validator Config 1.0//EN" "" target="_blank">http://struts.apache.org/dtds/xwork-validator-config-1.0.dtd">

17. 打开使用了<s:datetimepicker>标签的页面,报错信息:用前缀[s]导入的标记库中未定义标记[datetimepicker]

----解决办法:

1、将struts2-dojo-plugin-2.3.37拷贝到/web-inf/lib下,并解压把struts-dojo-tags.tld拷贝到/web-inf/下

2、在jsp文件中加入<%@ taglib uri="/struts-dojo-tags" prefix="sx"%>

3、将<s:datetimepicker 标签改成上面设置的前缀<sx:datetimepicker

struts框架访问页面国际化乱码,是因为.globalMessages文件未被扫描到

--------需要把该文件放到src目录下

相关文章:

struts1.2升级struts2.5.30问题汇总

严重: 配置应用程序监听器[org.apache.struts2.tiles.StrutsTilesListener]错误java.lang.NoClassDefFoundError: org/apache/tiles/web/startup/AbstractTilesListenerat java.lang.ClassLoader.defineClass1(Native Method)at java.lang.ClassLoader.defineClass(ClassLoader…...

电动汽车充放电的优化调度(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

《JeecgBoot系列》 如何设计表单实现“下拉组件二级联动“ ? 以省市二级联动为例

《JeecgBoot系列》 如何设计表单实现"下拉组件二级联动" ? 以省市二级联动为例 一、准备字典表 1.1 创建字典表 CREATE TABLE sys_link_table ( id int NULL, pid int NULL, name varchar(64) null );1.2 准备数据 idpidname1全国21浙江省32杭州市42宁波市51江苏…...

数学小课堂:数学的线索(从猜想到定理再到应用的整个过程)

文章目录 引言I 勾股定理1.1 勾三股四弦五1.2 数学和自然科学的三个本质差别1.3 总结引言 从猜想到定理再到应用的整个过程是数学发展和体系构建常常经历的步骤。 I 勾股定理 勾股定理: 直角三角形两条直角边的平方之和等于斜边的平方,这个定理在国外都被称为毕达哥拉斯定理…...

Collecting package metadata (current_repodata.json): failed

一、问题描述 安装anaconda之后&#xff0c;想创建环境&#xff0c;用了下面这段代码&#xff1a; conda create -n pytorch python3.7 conda创建环境报错了&#xff0c;报了如下这一堆&#xff1a; Collecting package metadata (current_repodata.json): failedUnavailab…...

几十亿工单表,查询优化案例

前言: 之前在某大型保险公司担任技术经理&#xff0c;负责优化话务系统模块&#xff0c;由于系统已经运行10年之久&#xff0c;尤其在话务系统中&#xff0c;沉积了几十亿的话务信息表&#xff0c;业务人员反馈&#xff0c;话务系统历史数据查询部分已经完全查询不动&#xff0…...

LabVIEW应用程序(EXE)无法正确动态调用插件

LabVIEW应用程序&#xff08;EXE&#xff09;无法正确动态调用插件正在构建一个应用程序并使用插件架构&#xff0c;以便可以动态调用将来创建的VI&#xff08;插件&#xff09;。应用程序在LabVIEW开发环境中可以正常运行&#xff0c;但不能作为可执行程序运行。运行可执行文件…...

到了35岁,软件测试职业发展之困惑如何解?

35岁&#xff0c;从工作时间看&#xff0c;工作超过10年&#xff0c;过了7年之痒&#xff0c;多数IT人都已经跳槽几次。 35岁&#xff0c;发展比较好的软件测试人&#xff0c;已经在管理岗位&#xff08;测试经理甚至测试总监&#xff09;或已经成为测试专家或测试架构师。发展…...

Google Guice 3:Bindings(1)

1. 序言 上一篇博客&#xff0c;《Google Guice 2&#xff1a;Mental Model》&#xff0c;讲述了Guice的建模思路&#xff1a;Guice is a map Guice官网认为&#xff1a;binding是一个对象&#xff0c;它对应Guice map中的一个entry&#xff0c;通过创建binding就可以向Guice …...

学习国家颁布的三部信息安全领域法律,理解当前工作中的信息安全合规要求

目录三部信息安全领域的法律文件三部法律的角色定位与联系三部法律的适用范围三部法律的主要履职部门三部法律条文章节结构中的共性三部法律中的一些次重点章节网络安全法的重点章节数据安全法的重点章节个人信息保护法的重点章节关于工业和信息化部行政执法项目清单三部信息安…...

LeetCode_Python_二分查找算法

二分查找算法要求二分查找过程如何更新左右边界实例type1&#xff1a;常规记录中间元素type2&#xff1a;取跳出循环后的左或右边界算法要求 顺序存储结构元素大小有序 二分查找过程 将元素排序&#xff1b;将中间位置记录的这个元素与目标元素比较&#xff1b; 2.1 如果相同&a…...

功能测试三年,是时候做出改变了

前言 测试行业3年多经验&#xff0c;学历大专自考本科&#xff0c;主要测试方向web&#xff0c;PC端&#xff0c;wap站&#xff0c;小程序公众号都测试过&#xff0c;app也测过一些&#xff0c;C端B端都有&#xff0c;除功能外&#xff0c;接口性能也有涉猎&#xff0c;但是不…...

图扑孪生工厂流水线组态图可视化

前言 2018 年&#xff0c;世界经济论坛(WEF)携手麦肯锡公司共同倡议并正式启动了全球“灯塔工厂网络项目”(Lighthouse Network)&#xff0c;共同遴选率先应用工业革命 4.0 技术实现企业盈利和持续发展的创新者与示范者。这就使得工厂系统需要对各流水线及生产运行成本方面进行…...

车机开发—【CarService启动流程】

汽车架构&#xff1a;车载HAL是汽车与车辆网络服务之间的接口定义&#xff08;同时保护传入的数据&#xff09;&#xff1a; 车载HAL与Android Automotive架构&#xff1a; Car App&#xff1a;包括OEM和第三方开发的AppCar API&#xff1a;内有包含CarSensorManager在内的AP…...

webpack中require.context的运用

1. 作用&#xff1a; 利用require创建context (上下文)&#xff0c;来告知在编译时具体需要导入哪些模块(即&#xff1a;批量处理待导入模块进行导入)&#xff1b; webpack会在构建的时候解析代码中的require.context() (实际上是webpack的方法&#xff0c;vue一般基于webpack…...

2023“Java基础-中级-高级”面试集结,已奉上我的膝盖

Java基础&#xff08;对象线程字符接口变量异常方法&#xff09; 面向对象和面向过程的区别&#xff1f; Java 语言有哪些特点&#xff1f; 关于 JVM JDK 和 JRE 最详细通俗的解答 Oracle JDK 和 OpenJDK 的对比 Java 和 C的区别&#xff1f; 什么是 Java 程序的主类&…...

RabbitMQ之发布确认

发布确认 1 发布确认原理 生产者将信道设置成 confirm 模式,一旦信道进入 confirm 模式,所有在该信道上面发布的消息都将会被指派一个唯一的 ID(从 1 开始),一旦消息被投递到所有匹配的队列之后,broker就会发送一个确认给生产者(包含消息的唯一 ID),这就使得生产者知道消…...

一文读懂函数编程及其工作原理

微软MVP实验室研究员 马洪喜-微软 MVP 19年研发经验 云计算咨询顾问专家 容器云及基础架构云技术专家 DevOps 及微服务咨询专家 什么是函数编程 我先用通俗的大白话给大家解释一下函数(Functions, Function as a Service, FaaS)的几个要点&#xff0c;这样看后面示例时才不…...

WSO2 apim Subscribe to an API

WSO2 apim Application Subscribe to an API1. Published an Api2. Subscribe to an API using Key Generation Wizard3. Subscribe to an existing application4. AwakeningWSO2安装使用的全过程详解: https://blog.csdn.net/weixin_43916074/article/details/127987099. Offi…...

聚类(性能度量)

文章目录聚类&#xff08;性能度量&#xff09;外部指标例1内部指标例2聚类&#xff08;性能度量&#xff09; 对数据集 D{x1,x2,...,xm}D\{x_1,x_2,...,x_m\}D{x1​,x2​,...,xm​} &#xff0c;假定通过聚类给出的簇划分为 C{C1,C2,...,Ck}C\{C_1,C_2,...,C_k\}C{C1​,C2​,…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上&#xff0c;你可以使用apt包管理器来安装NFS服务器。打开终端并运行&#xff1a; sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享&#xff0c;例如/shared&#xff1a; sudo mkdir /shared sud…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist

现象&#xff1a; android studio报错&#xff1a; [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决&#xff1a; 不要动CMakeLists.…...