spring-2.5.6升级为spring-4.3.13过程记录

news2024/10/5 19:16:42

一、首先不管三七二十一,把spring-2.5.6的包全删除了

在这里插入图片描述
引进spring-4.3.13的包
在这里插入图片描述

二、参考https://blog.csdn.net/weixin_33978016/article/details/92103733修改

web.xml修改,我原项目跟他一样,所以不用改
修改前

    <servlet>
            <servlet-name>context</servlet-name>
            <servlet-class>
                    org.springframework.web.context.ContextLoaderServlet
            </servlet-class>
            <load-on-startup>1</load-on-startup>
    </servlet>

修改后

org.springframework.web.context.ContextLoaderListener

三,applicationContext.xml修改

命名空间修改前

命名空间修改后

四,applicationContext.xml语法差异

spring 4.x 去掉了 dependency-check
引用bean bean=代替了local=

我的项目没找到dependency-check,所以没有替代为local
我引用bean如下


【错误处理1】
1、信息: 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录,以获取已扫描但未在其中找到TLD的完整JAR列表。 在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间。
9月 23, 2023 11:44:02 上午 org.apache.catalina.core.StandardContext listenerStart
严重: 配置应用程序监听器[org.springframework.web.context.ContextLoaderListener]错误
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

发现spring4的jar包没有发布到TomCat里面,所以直接把jar包复制到lib路径
在这里插入图片描述

【错误处理2】
信息: 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录,以获取已扫描但未在其中找到TLD的完整JAR列表。 在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间。
9月 23, 2023 11:48:52 上午 org.apache.catalina.core.StandardContext filterStart
严重: 启动过滤器异常[struts2]
java.lang.ClassCastException: class org.apache.struts2.dispatcher.FilterDispatcher cannot be cast to class jakarta.servlet.Filter (org.apache.struts2.dispatcher.FilterDispatcher is in unnamed module of loader org.apache.catalina.loader.ParallelWebappClassLoader @5b057c8c; jakarta.servlet.Filter is in unnamed module of loader java.net.URLClassLoader @5b464ce8)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:243)

这个是web.xmll配置的struts2拦截器
 在struts2.1版本之前,所使用的核心过滤器类是 org.apache.struts2.dispatcher.FilterDispatcher,
 从struts2.1版本之后,已经不推荐使用,而是使用org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter类。
 当struts2.5之后的版本时,推荐将类完全名称中的ng去掉,即使用org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter类。
 
可是我的项目是struts2-2.1.6,难道要一起升级一下吗?

百度了一下jakarta
原来TomCat10需要使用到 Jakarta 6.0 的版本,而我也刚好把TomCat升级为TomCat10;
而spring4.3 和struts2.1 项目使用的 javax 冲突了

理论上来讲,Java EE 8 (2017 年 8 月 31 日)已经结束了,之后就没有 Java EE 了。原文是这么说的 Oracle waves good-bye to Java Enterprise Edition, as the Eclipse Foundation takes over Java EE under a new name, Jakarta, and without the “Java” trademark 。所以以后基于 Java EE 的规范,比如 Servlet 等都需要做不兼容的升级
你可以使用工具来将原来的 javax 包名的项目转换到新的项目下:
GitHub 在这里: https://github.com/apache/tomcat-jakartaee-migration
或者这里: https://tomcat.apache.org/download-migration.cgi

参考资料:
https://www.cnblogs.com/cyq1162/p/16627619.html
https://www.nuomiphp.com/t/62f726597ac6e30c717413b1.html

对于这个错误,我选择不动,降级TomCat为8.5,因为我主要目的是升级spring就好了。

【错误处理3】
ERROR - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘txAdvice1’: Cannot resolve reference to bean ‘transactionManager1’ while setting bean property ‘transactionManager’; nested exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name ‘transactionManager1’ defined in class path resource [applicationContext-db1.xml]: Cannot resolve reference to bean ‘sessionFactory1’ while setting bean property ‘sessionFactory’; nested exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name ‘sessionFactory1’: Failed to introspect bean class [org.springframework.orm.hibernate3.LocalSessionFactoryBean] for lookup method metadata: could not find class that it depends on; nested exception is java.lang.NoClassDefFoundError: org/hibernate/cache/RegionFactory
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:359)

看到这个applicationContext-db1.xml,就想到我这两个文件的标头还没改,于是也一起改了,参考applicationContext-db.xml
在这里插入图片描述

改完运行还是报这个错误
研究了一下这个文件,没看出啥
dataSource1–》sessionFactory1–》transactionManager1–》txAdvice1

最后再仔细看了那个错误,说是缺少org/hibernate/cache/RegionFactory
百度了一下 hibernate3.0版本压根就没有这个org.hibernate.cache.RegionFactory类,我看了一下我的是hibernate-3.2.6
因此最后把hibernate3.2.6版本换成4.2版本,再运行,就出现了下面的错误

【错误处理4】
Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘txAdvice1’: Cannot resolve reference to bean ‘transactionManager1’ while setting bean property ‘transactionManager’; nested exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name ‘transactionManager1’ defined in class path resource [applicationContext-db1.xml]: Cannot resolve reference to bean ‘sessionFactory1’ while setting bean property ‘sessionFactory’; nested exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name ‘sessionFactory1’: Failed to introspect bean class [org.springframework.orm.hibernate3.LocalSessionFactoryBean] for lookup method metadata: could not find class that it depends on; nested exception is java.lang.NoClassDefFoundError: [Lorg/hibernate/engine/FilterDefinition;

一大段英文,看到最后就是缺少这个Lorg/hibernate/engine/FilterDefinition
这是我改了Hibernate的版本为4.2,所以需要修改spring配置文具,上一步没有修改导致的,我改成4
在这里插入图片描述

改好之后,又出现以下问题

【错误处理5】
Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘txAdvice1’: Cannot resolve reference to bean ‘transactionManager1’ while setting bean property ‘transactionManager’; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘transactionManager1’ defined in class path resource [applicationContext-db1.xml]: Cannot resolve reference to bean ‘sessionFactory1’ while setting bean property ‘sessionFactory’; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘sessionFactory1’ defined in class path resource [applicationContext-db1.xml]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: org/jboss/logging/BasicLogger

这次不管,直接看最后,缺少org/jboss/logging/BasicLogger
原因:缺少jboss-logging的jar包
解决方法:添加jboss-logging.jar到lib下

这个挺奇怪的,之前怎么就不会缺少,换了Hibernate4就缺少了。

【错误处理6】
上面加人jar之后,重启又提示这个错误
Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘txAdvice1’: Cannot resolve reference to bean ‘transactionManager1’ while setting bean property ‘transactionManager’; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘transactionManager1’ defined in class path resource [applicationContext-db1.xml]: Cannot resolve reference to bean ‘sessionFactory1’ while setting bean property ‘sessionFactory’; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘sessionFactory1’ defined in class path resource [applicationContext-db1.xml]: Invocation of init method failed;
nested exception is java.util.ServiceConfigurationError: org.hibernate.integrator.spi.Integrator: Provider org.hibernate.search.hcore.impl.HibernateSearchIntegrator could not be instantiated

看最后面instantiated(实例化),org.hibernate.search.hcore.impl.HibernateSearchIntegrator 没法实例化
这个不知道哪里导致无法实例化
只能拉下去看其它错误,看到这句
Caused by: java.lang.ClassNotFoundException: org.jboss.logging.DelegatingBasicLogger
难道是我上面加的jboss-logging.jar包不对?重新下载了个jboss-logging-3.3.2.Final

重新运行,出现其它错误了

【错误处理7】
Caused by: java.lang.NoClassDefFoundError: org/apache/lucene/index/CorruptIndexException

Lucene是apache软件基金会 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。

于是加入了lucene4.0常用jar包

重新运行,又有错误了

【错误处理8】
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘sessionFactory1’ defined in class path resource [applicationContext-db1.xml]: Invocation of init method failed; nested exception is java.lang.IncompatibleClassChangeError: class org.hibernate.search.util.impl.DelegateNamedAnalyzer overrides final method org.apache.lucene.analysis.Analyzer.tokenStream(Ljava/lang/String;Ljava/io/Reader;)Lorg/apache/lucene/analysis/TokenStream;
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1628)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:351)
… 34 more
Caused by: java.lang.IncompatibleClassChangeError: class org.hibernate.search.util.impl.DelegateNamedAnalyzer overrides final method org.apache.lucene.analysis.Analyzer.tokenStream(Ljava/lang/String;Ljava/io/Reader;)Lorg/apache/lucene/analysis/TokenStream;
at java.base/java.lang.ClassLoader.defineClass1(Native Method)

上面引入的lucene4.0版本不对,重新换个lucene-analyzers-3.5.0,换了lucene-core-7.0.1.jar,还是不行,应该是Lucene版本对不上,头痛不想搞了,还不如重新建个项目,把代买搬过去得了。哭死o(╥﹏╥)o

【错误处理9】
Hibernate 3.5+之后取消掉了 Hibernate.STRING
取而代之的就是StandardBasicTypes
SQLQuery q = this.session.createSQLQuery(sql);
q.addScalar(“isbn”, StandardBasicTypes.STRING);
q.addScalar(“bname”, StandardBasicTypes.STRING);
q.addScalar(“pubdate”, StandardBasicTypes.DATE);
q.addScalar(“press”, StandardBasicTypes.STRING);
q.addScalar(“author”, StandardBasicTypes.STRING);
q.addScalar(“price”, StandardBasicTypes.DOUBLE);
q.addScalar(“bkcount”, StandardBasicTypes.INTEGER);
q.addScalar(“descb”, StandardBasicTypes.STRING);
————————————————
版权声明:本文为CSDN博主「蜡基ZQ」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_34239028/article/details/81293441
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1034253.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring之bean的生命周期源码解析

Spring最重要的功能就是帮助程序员创建对象&#xff08;也就是IOC&#xff09;&#xff0c;而启动Spring就是为创建Bean对象做准备&#xff0c;所以我们先明白Spring到底是怎么去创建Bean的&#xff0c;也就是先弄明白Bean的生命周期。 Bean的生命周期就是指&#xff1a;在Spr…

AI创作专家,免费的AI创作专家工具

AI创作专家是一种崭新的工具&#xff0c;它们利用先进的人工智能技术&#xff0c;帮助创作者和写手更轻松地应对创作挑战。这些工具不仅可以生成文字&#xff0c;还可以提供灵感、帮助构思和组织思路&#xff0c;使创作过程更加高效。 147GPT批量文章生成工具​www.147seo.com/…

【python】ray库使用

【python】ray库使用 安装案例运行案例代码&#xff08;torch&#xff09;运行输出解释案例代码&#xff08;tensorflow&#xff09;运行结果 安装 注意事项&#xff1a; 在windows下&#xff0c;需要python版本3.7以上&#xff0c;详见https://docs.ray.io/en/latest/ray-ove…

DT 卡通材质学习 一

渐变着色器 相交线 笔刷和卡通结合使用 修改器

停车场系统源码

源码下载地址&#xff08;小程序开源地址&#xff09;&#xff1a;停车场系统小程序&#xff0c;新能源电动车充电系统&#xff0c;智慧社区物业人脸门禁小程序: 【涵盖内容】&#xff1a;城市智慧停车系统&#xff0c;汽车新能源充电&#xff0c;两轮电动车充电&#xff0c;物…

VSCode远程连接服务器报错:Could not establish connection to

参考&#xff1a;https://blog.csdn.net/weixin_42538848/article/details/118113262 https://www.jb51.net/article/219138.htm 刚开始把ssh文件夹中的known_hosts给删除了&#xff0c;发现没啥用。 之后在扩展Remote-SSH里面&#xff0c;把config file路径设置为ssh文件夹里…

壁炉的智能化:现代设计师的创新挑战

壁炉一直以来都是家庭的焦点之一&#xff0c;不仅因为它们提供了温暖&#xff0c;更因为它们在室内空间中的装饰价值。然而&#xff0c;如今的壁炉不再仅仅是传统的取暖设备&#xff0c;它们变得更加智能化&#xff0c;提供了更多的功能和便利性。对于室内设计师来说&#xff0…

Nginx图片防盗链

原理 浏览器向web服务器发送请求时一般会在header中带上Referer信息&#xff0c;服务器可以借此获得一些信息用来处理盗链 不过Referer头信息其实是可以伪装生成的&#xff0c;所以通过Referer信息防盗链并非100%可靠 具体方法 核心点就是在Nginx配置文件中&#xff0c;加入…

我的Qt作品(19)使用Qt写一个轻量级的视觉框架---第2章,仿海康VM实现思维导图拖拽方式的算法流程图

上次写的第1章介绍了主界面的设计。 https://blog.csdn.net/libaineu2004/article/details/130277151 本次是第2章&#xff0c;主要介绍流程图的运行。 目前市面上视觉框架很多&#xff0c;主要有列表图方式和流程图方式。海康VM的流程图方式比较受用户的喜爱和欢迎&#xf…

记一次失败的pip使用经历

python如何使用pip工具下载第三方库&#xff1f; 首先&#xff0c;安装并配置好python和pip的环境&#xff0c;特别注意pip放在python的script文件下&#xff0c;有pip和pip3两种&#xff0c;选择pip3版本。如下图所示。 然后打开命令行窗口&#xff0c;检查python和pip工具是…

iterator和generator

iterator和generator iterator es6: let/const ...展开 迭代器 是一种机制&#xff0c;比如在控制台输出Iterator是没有这个类的&#xff0c;为不同的数据结构提供迭代循环的机制。 迭代器对象&#xff1a;具备next方法&#xff0c;next能够对你指定的数据进行迭代循环&#x…

Vue 的组件加载顺序和渲染顺序

1、结论先行 组件的加载顺序是自上而下的&#xff0c;也就是先加载父组件&#xff0c;再递归地加载其所有的子组件。 而组件渲染顺序是按照深度优先遍历的方式&#xff0c;也就是先渲染最深层的子组件&#xff0c;再依次向上渲染其父组件。 2、案例 下面是一个简单的示例代…

灰度变换 几种常见的空间滤波,例如均值、中值滤波(数字图像处理概念 P3)

文章目录 背景知识 & 一些基础的变换直方图处理 ★均值滤波器中值滤波器锐化空间滤波器 增强的首要目标是处理图像&#xff0c;使其更适合某些应用 图像质量的视觉评价是一种高度主观的过程 背景知识 & 一些基础的变换 直方图处理 ★ 均值滤波器 中值滤波器 锐化空间滤…

接口自动化测试之Requests模块详解

Python中&#xff0c;系统自带的urllib和urllib2都提供了功能强大的HTTP支持&#xff0c;但是API接口确实太难用了。Requests 作为更高一层的封装&#xff0c;在大部分情况下对得起它的slogan——HTTP for Humans。 让我们一起来看看 Requests 这个 HTTP库在我们接口自动化测试…

关键点检测 HRNet网络详解笔记

关键点检测 HRNet网络详解笔记 0、COCO数据集百度云下载地址1、背景介绍2、HRNet网络结构3、预测结果&#xff08;heatmap&#xff09;的可视化3、COCO数据集中标注的17个关键点4、损失的计算5、评价准则6、数据增强7、模型训练 论文名称&#xff1a; Deep High-Resolution Rep…

Parasoft Jtest 2023.1

Parasoft Jtest 2023.1 2692407267qq.com&#xff0c;更多内容请见http://user.qzone.qq.com/2692407267/

知识图谱:信息抽取简易流程

目录 一、标注训练数据 二、训练数据模型 三、实现NER 一、标注训练数据 使用工具:Brat ## BRAT安装 0、安装条件 (1)运行于Linux系统 (2)brat(v1.3p1)仅支持python2版本运行使用,否则会报错 File "standalone.py", line 257except SystemExit, sts:^Syn…

探索最佳建筑工程项目管理软件,提高效率与协作

相比于其他行业的项目管理&#xff0c;建筑工程项目管理的周期一般更长&#xff0c;涉及部门更多&#xff0c;传统的管理方式无法照顾到方方面面。因此越来越多的工程团队希望能通过现代化数据管理工具来协助自己进行建筑工程项目管理。 正所谓有需求就有市场&#xff0c;目前市…

使用SSH连接虚拟机一直提示填写密码

查看ssh服务是否开启 service ssh status 上面的报错&#xff0c;查看ssh、sshd是否都已安装&#xff1a;ps -e| grep ssh 这里显示没有安装sshd 安装sshd&#xff1a;sudo apt-get install openssh-server centos和ubantu的安装指令不一样&#xff0c;centos是使用yum指令进…