Java EE改Jakarta

昨天折腾了一天,把旧项目升级了

旧项目运行环境
jdk :jdk1.7
TomCat:TomCat8.0 或者 TomCat 8.5
Eclipse 2022-12
spring:spring-2.5.6.jar
Hibernate:hibernate-3.2.6.ga.jar
Struts:struts2-core-2.1.6.jar

升级后运行环境
jdk :jdk1.8
TomCat:TomCat9.0 TomCat的jdk也是1.8
Eclipse 2022-12
spring:Spring4.3.13
Hibernate:hibernate-core-4.1.12.Final.jar
Struts:struts2.5.32

由于jdk1.8还是Java EE项目,还不是很满足,今天决定继续折腾,把项目升级为Jakarta试试。
整个项目已经备份了,不怕坏。

【Jakarta的由来】
Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。它分为三个版本:

Java SE(J2SE):标准版。基础中的基础,后面2个版本都依赖于它。当前最新版本是Java 17(LTS版本,将于2021年9月发布)
Java EE(J2EE):企业版。用于企业级大型应用开发,包含了Web、Security、Management等几十种标准技术
Java ME(J2ME):移动版。随着Android/iOS的流行,它已几乎销声匿迹

Oracle将 Java EE (Java SE还自己保留)交给开源组织,Eclipse基金会接手。但Oracle不允许开源组织使用Java名号,所以Jakarta EE名称于2018.02.26应运而生
在这里插入图片描述

由于我电脑本身就安装了jdk17,所有直接换jdk17了

更换后源代码会出现很多红色标线

【处理问题1】
import javax.annotation.Resource; 很多类文件的这句标红

Java为我们提供了 javax.annotation.Resource这个注解。
spring框架提供了org.springframework.beans.factory.annotation.Autowired。

一般情况下我们使用 javax.annotation.Resource这个注解,因为这样我们就能实现和spring框架的解藕。
原文链接:https://blog.csdn.net/weixin_39797780/article/details/114972302

这时意识到一个问题
【jdk 和 java ee 和 jakarta ee 到底有什么区别啊】
Java EE是Java企业版,是面向企业级应用开发而设计的Java平台。
JDK则是Java开发工具包,包含了开发和运行Java程序所需的所有组件。

Java EE和JDK之间有许多共同点。Java EE是建立在JDK之上的,也就是说,Java EE中使用的所有Java API都位于JDK中。既然Java EE是基于JDK的,那么JDK的版本肯定会影响Java EE的应用开发。

另外,Java EE中的一些新特性只能在较新的JDK版本中使用。比如,Java EE 7中引入了Lambdas表达式,这是在JDK 8中才被引入的新语言特性。因此,在使用Java EE 7时,必须使用JDK 8或更高版本。

jdk,jre,jvm的区别可见https://blog.csdn.net/Martin_chen2/article/details/112905578

【搞清关系后,我需要下载一个Jakarta ee】
https://blog.csdn.net/yuanhong55/article/details/133868639?spm=1001.2014.3001.5502

研究了好久,找到这篇文章
https://blog.csdn.net/xiaofanku/article/details/112618281

升级jakarta并不是简单的把java ee替换成jakarta;还要看以下两点条件
1、服务器是否支持jakarta
目前有多个服务器已适配jakarta,tomcat 10支持jakarta;所以服务器没啥问题;
2、框架类是否支持jakarta

头晕,不搞了,恢复用java ee

【2023-10-16】
由于之前研究这么久,没转换成功,还是不甘心,继续搞,加油,加油,加油!!!

【首先解决import javax.annotation.Resource;的错误】
我下载了一个jakarta.annotation-api-2.1.1.jar,加人到项目里。
然后search—》file-》replace
在这里插入图片描述
把import javax.annotation.Resource;全部替换成import jakarta.annotation.Resource; 所有的红色错误解决了。

【还有一个红色XX】
在这里插入图片描述
点Markers可以看到具体的错误
在这里插入图片描述
英文不是很懂,大概是说Java编译器级别太低,与java项目不匹配。
我现在用的是eclipse 2022-12 ,于是我下载一个最新的eclipse 2023-9,跟换完之后还是有。最后在项目属性里面改了这个为java17,就可以了
在这里插入图片描述

改完之后项目完全没错了,部属到tomcat 10试试,因为tomcat10才支持jakarta

运行后出现以下错误

【错误1】
严重: 启动过滤器异常[struts2]
java.lang.ClassCastException: class org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter cannot be cast to class jakarta.servlet.Filter (org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter is in unnamed module of loader org.apache.catalina.loader.ParallelWebappClassLoader @686449f9; jakarta.servlet.Filter is in unnamed module of loader java.net.URLClassLoader @3ac3fd8b)

struts2的过滤器

这个错误表明struts2它不支持Tomcat 10。“问题”在于Tomcat 10切换到了Jakarta EE 9规范,Jakarta EE 9从javax.*包名称空间切换到了jakarta.*包名称空间。
根据version notes,Struts2 6.0.0 GA是Servlet 3.1(Java EE 7),它使用javax.*命名空间,这意味着它通常兼容JavaEE 7和8以及Jakarta EE 8,但不兼容Jakarta EE 9和更高版本,这意味着您需要使用Tomcat 9。
根据WW-5141 Jakarta EE 9(或更高版本),Struts2 7.0.0中 * 计划 * 提供支持。
参考:https://www.saoniuhuo.com/question/detail-2545768.html

struts2下载地址:https://struts.apache.org/download.cgi

struts2最新版是 6.0.0.1,更新内容https://cwiki.apache.org/confluence/display/WW/Version+Notes+6.0.0

何时支持Jakarta,要7.0.0版本https://issues.apache.org/jira/browse/WW-5141

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值