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

springboot maven 构建 建议使用 --release 21 而不是 -source 21 -target 21,因为它会自动设置系统模块的位置

使用 --release 选项代替 -source 和 -target 是一种更安全、更兼容的方式,特别是在构建使用较新版本 JDK 的项目时。以下是详细解释和建议:

1. 为什么推荐使用 --release

问题点:

使用 -source 和 -target 标志时,仅设置了代码的语言级别和字节码目标版本,但编译器仍可能使用当前 JDK 提供的类库(如 rt.jar 或 java.base 模块),这可能会导致生成的字节码依赖于目标环境中不存在的 API,从而引发运行时错误。

解决方案:

release 选项通过同时设置:

源代码的语言级别
字节码的目标版本
标准库的目标版本
这样可以确保编译时只使用目标 JDK 的 API,而不是当前 JDK 环境中的 API,从而避免潜在的不兼容性问题。

2. 示例:构建 JDK 21 的项目

正确的方式:

javac --release 21 -d out Main.java

错误的方式:

javac 
http://www.lryc.cn/news/511461.html

相关文章:

  • 离散数学 复习 详细(子群,元素的周期,循环群,合同)
  • Java后端常见问题 (一)jar:unknown was not found in alimaven
  • overleaf中文生僻字显示不正确,显示双线F
  • C语言中的贪心算法
  • 虚幻引擎结构之UWorld
  • 太通透了,Android 流程分析 蓝牙enable流程(stack/hidl)
  • 2.微服务灰度发布落地实践(agent实现)
  • 搭建医疗客服知识库:智慧医疗的基石
  • CES Asia 2025的低空经济展区有哪些亮点?
  • Java/Spring项目包名为何以“com”开头?
  • 影刀进阶应用 | 知乎发布想法
  • v-if 和 v-for 优先级
  • 【数据结构与算法】单向链表
  • 网络编程UDP—socket实现(C++)
  • 系统思考—冰山模型
  • MySQL 中存储金额数据一般使用什么数据类型
  • Excel中一次查询返回多列
  • Java中各种数组复制方式的效率对比
  • STM32 FLASHdb
  • 【漏洞复现】Struts2(CVE-2024-53677)任意文件上传逻辑绕过漏洞
  • 图的最短路径(C++实现图【4】)
  • Pandas01
  • opencl 封装简单api
  • 超快速的路径优化IKD-SWOpt:SHIFT Planner 中增量 KD 树滑动窗口优化算法详解
  • 精读DeepSeek v3技术文档的心得感悟
  • 【Java数据结构】LinkedList与链表
  • uniapp——微信小程序,从客户端会话选择文件
  • 【CSS in Depth 2 精译_098】17.3:CSS 动画延迟技术与填充模式设置 + 17.4:通过 CSS 动画传递意图的秘诀
  • Oracle考试多少分算通过?
  • 在云服务器中编译IDF(ESP32库)