【springboot3.x 记录】关于Jakarta包无法引入的问题

这篇具有很好参考价值的文章主要介绍了【springboot3.x 记录】关于Jakarta包无法引入的问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近想将一些项目升级到springboot3.x和java17的时候,发现项目依赖中有Jakarta的包,但是代码标红提示没有相关的类,特此记录一下排查问题和最终解决问题的思路方法

一、发现问题

因为之前有创建过 springboot3.x + java17 的项目,也运行正常。所以最近想着将一些旧项目也做一下update,但是不幸运的是,当改了一通代码后编译的时候,提示 "程序包jakarta.annotation不存在"。

jakarta包,springboot进阶应用,java,spring boot,后端

下图看到 Resource 注解是标红提示没有找到。

jakarta包,springboot进阶应用,java,spring boot,后端

之前也知道Java EE要迁移到Jakarta EE,也对整个项目的相关代码进行了修改,但是为什么还会提示有异常呢?

二、分析问题

1.依赖引入

首先考虑的肯定是对应的包是否已经引入进来,于是查看了项目的依赖

jakarta包,springboot进阶应用,java,spring boot,后端

依赖里面明明是有的,为什么还是提示没有这个注解类呢?

于是 mvn clean、ide清缓存索引等等一波操作后,仍是无果....

2.发现问题点

后来看了一下项目配置,看了一下这里面的依赖,好家伙,作用域scope居然是test...

jakarta包,springboot进阶应用,java,spring boot,后端

那为什么作用域会是测试阶段的呢?

3.查看依赖关系

那就看看到底是从哪里引入进来的

jakarta包,springboot进阶应用,java,spring boot,后端

通过依赖分析工具,查到原来是从 spring-boot-starter-test 引入进来的,而项目中这个依赖的作用域确实是 test

jakarta包,springboot进阶应用,java,spring boot,后端

那问题来了,为什么之前的项目就可以的呢?不过这个 jakarta 包不应该是从测试依赖导入进来的啊!

4.对比分析

于是对比了一下之前运行正常的项目,看看这个 jakarta 包是如何正常引入进来运行的。

jakarta包,springboot进阶应用,java,spring boot,后端

好家伙,原来是从 spring-boot-starter-web 引入进来的,同时也看看其他的几个 jakarta 包。

jakarta包,springboot进阶应用,java,spring boot,后端

真的不看不知道,平常真没怎么注意到这里面的依赖学问,因为自从用了 springboot 的 starter ,就真的很少关注到这些问题。

三、解决问题

要调整的这个项目里面因为是要打成jar包给其他项目使用,所以我就不想引入太多依赖包,就没有引入 starter,只是单纯的引入了 spring-web 这个包,但是这里面并没有 jakarta 依赖,而刚好项目里面又引入了一些单元测试用的依赖,所以阴差阳错就将 jakarta 以 test 作用域引入进来了...

所以,最终还是要引入 spring-boot-starter-web,不过我最后还是没妥协,只引入所需的依赖包

        <dependency>
            <groupId>jakarta.annotation</groupId>
            <artifactId>jakarta.annotation-api</artifactId>
        </dependency>

四、后续

通过查阅一些资料发现,原来 Java 17 已经不包括 jarkarta 模块...

在 Java 17 中,Jakarta EE 被移除,取而代之的是引入了 Java EE 的一部分作为扩展模块。要在 Java 17 中使用 Java EE 的功能,你需要在项目的 pom.xml 文件中添加相应的依赖文章来源地址https://www.toymoban.com/news/detail-757222.html

到了这里,关于【springboot3.x 记录】关于Jakarta包无法引入的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • echarts使用中,关于y坐标轴无法正常显示的问题记录

    前段日子封装了一个组件,大概功能为:给定一些数据,用户手动配置一些参数(如图),点击提交后,实现图表的渲染,除此之外还有其他一些功能。(还没和后端对接,数据为自己mock) 今天将组件移植到公司里面的程序时,发现纵坐标一直无法显示刻度,如下图所示 排

    2024年02月11日
    浏览(46)
  • 【springboot3.x 记录】解决 springboot3 集成 mybatis-plus 报 sqlSession 异常

    2022-12-30,作者最新发布了 3.5.3.1 版本,不需要使用快照版本了 ========================= springboot3 已经发布正式版,第一时间尝鲜看看如何,但是在集成 mybatis-plus 最新版 3.5.2 的时候发现提示异常。 看来 springboot3 在注入这块做了调整,但目前 mybatis-plus 并没有适配到。 于是翻查

    2024年02月13日
    浏览(45)
  • SpringBoot3.1.2 引入Swagger报错Type javax.servlet.http.HttpServletRequest not present解决办法

    1.问题描述: 引入swagger2.X版本后,导致SpringBoot3.1.2启动报错 2.原因分析: SpringBoot3.1.2版本依赖于jakarta依赖包,但是Swagger依赖底层应用的javax依赖包,所以只要一启动就会报错。 3.解决办法: pom.xml文件,移除swagger2 加入 代码修改 SwaggerConfig.java 实体类 controller类 遇到报错:

    2024年02月04日
    浏览(43)
  • 记录springboot在k8s下无法读取文件问题

    //加载配置文件 File file = ResourceUtils.getFile(\\\"classpath:/template/job.yaml\\\");  /对象映射  V1Job v1Job = (V1Job) Yaml.load(file); 开发的时候使用上面的方法可以读取文件数据,但是部署到k8s容器中之后,读取文件出现报错,找不到文件。于是改成了下面的写法: 成功读取文件数据。上述两种

    2024年02月15日
    浏览(41)
  • 【工作记录】基于springboot3+springsecurity6实现多种登录方式(一)

    springboot3已经推出有一段时间了,近期公司里面的小项目使用的都是springboot3版本的,安全框架还是以springsecurity为主,毕竟亲生的。 本文针对基于springboot3和springsecurity实现用户登录认证访问以及异常处理做个记录总结,也希望能帮助到需要的朋友。 需要提供登录接口,支持

    2024年03月24日
    浏览(50)
  • 记录开发环境docker上的一次springboot无法读取更新的配置文件的问题

    背景:一般开发环境的管理不是很严格,当对代码进行一些组件的添加时,往往需要修改spring的配置文件,有的时候为了保险起见,回预先备份原本的配置文件,我采取在./config中创建了一个名为bak-日期的目录,将原本的配置文件mv到该目录下,将新的配置文件移到config目录

    2024年02月11日
    浏览(45)
  • 【工作记录】基于springboot3+springsecurity实现多种方式登录及鉴权(二)

    上篇文章介绍了基于springboot3+springsecurity实现的基于模拟数据的用户多种方式登录及鉴权的流程和代码实现,本文我们继续完善。 主要通过如下几个点来完成优化和完善: 用户信息获取通过查询mysql数据库实现 token生成方式使用jwt 用户信息存储及读取使用redis 完善过滤器用户

    2024年01月19日
    浏览(42)
  • 关于在 springboot 中使用 @Autowired 注解来对 TemplateEngine 进行自动装配时,无法注入的问题。

    本文是基于江南一点雨的 Spring Boot+Vue 系列视频教程第 三 章的第三节,详情参考Spring Boot+Vue系列视频教程 在观看学习这一节时,发现当进行手动渲染 Thymeleaf 模板时,通过 @Autowired 注解来对 TemplateEngine 进行自动装配时,发现 idea 对其显示 No beans of \\\'TemplateEngine \\\' type of found。

    2024年02月02日
    浏览(44)
  • [IDEA_SpringBoot_配置文件]关于yml以及yaml配置文件无法被识别的问题,

    原因可能是 未被加载到spring中/或者是并没有被spring所识别到 1. 打开我们项目的项目结构 快捷键 ctrl alt shift s 2. 选择 Facets 3. 找到对应的项目spring 4.进入之后在右侧上方的工具选项卡中选择最右边的 绿色叶子 5. 进入后, 点击 左上方的添加按钮 添加自定义的配置文件 6、 请

    2024年01月19日
    浏览(51)
  • 关于磁盘空间不够,导致报错 springboot内置tomcat相关的临时目录无法创建等问题,如何自定义配置 tomcat 缓存文件路径

    关于磁盘空间不够,导致报错 springboot内置tomcat相关的临时目录无法创建等问题,如何自定义配置 tomcat 缓存文件路径 解决方法: shell 脚本命令:(配置自定义缓存路径参数 -Djava.io.tmpdir ) 注意: tmpPath 的绝对路径值必须是 / 斜杠结尾。 1. springboot内置tomcat相关的临时目录自

    2024年02月09日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包