• 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
    
    • 1

    【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

  • 相关阅读:
    ESP32+阿里云+vscode_Pio
    【高阶数据结构】图详解第二篇:图的遍历(广度优先+深度优先)
    214. Devu和鲜花
    day5:Node.js 第三方库
    [免费专栏] Android安全之剪贴板+键盘缓存+UI界面+自动截屏敏感信息挖掘
    Java框架(七)-- RESTful风格的应用(3)--浏览器的跨域访问
    00后会不会改变软件测试行业现状?
    【C++】STL—— unordered_map的介绍和使用、 unordered_map的构造函数和迭代器、 unordered_map的增删查改函数
    【检索资讯】2022年控制理论与应用国际会议(ICOCAT 2022)已成功被EI检索
    有关海盗王版本的那些说明
  • 原文地址:https://blog.csdn.net/yuanhong55/article/details/133239705