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

告别手动配置JRE!用JDK 18内置工具一键生成,并关联到IDEA项目

告别手动配置JRE!用JDK 18内置工具一键生成,并关联到IDEA项目

在Java开发中,JRE(Java Runtime Environment)一直是项目运行的基础环境。但自从JDK 18开始,一个显著的变化让许多开发者感到困惑——安装包中不再包含独立的JRE文件夹。这背后其实是Java模块化改革的深入,Oracle鼓励开发者根据项目需求定制运行时环境,而非使用一刀切的完整JRE。本文将带你深入理解这一变化,并手把手教你使用JDK 18内置工具快速生成定制化JRE,最后无缝集成到IntelliJ IDEA中。

1. 为什么JDK 18不再默认提供JRE?

自Java 9引入模块化系统(Jigsaw项目)以来,Oracle一直在推动更灵活的运行时环境管理方式。传统JRE包含所有Java SE模块,而实际项目可能只需要其中一小部分。这种"全量包"方式导致:

  • 资源浪费:部署的运行时环境包含大量未使用模块
  • 安全风险:不必要的模块增加攻击面
  • 体积臃肿:影响应用分发效率

JDK 18的jlink工具可以创建仅包含所需模块的精简运行时。例如,一个控制台程序可能只需要java.base模块,体积可以缩小到原来的1/5。

提示:虽然官方不再提供默认JRE,但jlink生成的定制JRE完全兼容原有生态,不会影响项目运行。

2. 使用jlink创建定制化JRE

2.1 基础命令实践

打开终端(Windows cmd/PowerShell,macOS/Linux Terminal),进入JDK安装目录下的bin文件夹,执行:

jlink --module-path jmods --add-modules java.base --output myjre

这个命令会创建一个只包含java.base模块的最小JRE。各参数含义:

参数说明
--module-path指定模块查找路径(通常是JDK的jmods目录)
--add-modules指定要包含的模块,多个模块用逗号分隔
--output输出目录名称

2.2 常见模块组合方案

根据项目类型,推荐以下模块组合:

  1. 基础控制台应用

    --add-modules java.base,java.logging
  2. Swing桌面应用

    --add-modules java.desktop,java.sql
  3. 网络应用

    --add-modules java.net.http,java.naming
  4. 全功能JRE(等效传统JRE)

    --add-modules ALL-MODULE-PATH

2.3 高级优化选项

通过额外参数可以进一步优化生成的JRE:

jlink --module-path jmods \ --add-modules java.base,java.desktop \ --compress=2 \ --no-header-files \ --no-man-pages \ --output optimized-jre
  • --compress=2:启用Zip压缩(0-2,2为最高压缩)
  • --no-header-files:排除C头文件
  • --no-man-pages:排除手册页

3. 将自定义JRE集成到IntelliJ IDEA

3.1 配置项目SDK

  1. 打开IDEA,进入File > Project Structure > Platform Settings > SDKs
  2. 点击+,选择Add JDK
  3. 导航到你的自定义JRE目录(上一步--output指定的路径)
  4. 命名为"MyCustomJRE"等有意义的名称

3.2 验证JRE有效性

创建测试类运行以下代码,确保所有需要的模块都可用:

public class ModuleCheck { public static void main(String[] args) { ModuleLayer.boot().modules().forEach(module -> { System.out.println(module.getName()); }); } }

3.3 打包配置技巧

Project Structure > Artifacts中配置打包时,可以:

  1. 将自定义JRE打包进应用镜像
  2. 使用jpackage创建包含运行时的安装包:
jpackage --name MyApp \ --input target/libs \ --main-jar myapp.jar \ --main-class com.example.Main \ --runtime-image optimized-jre \ --dest release

4. 疑难排查与最佳实践

4.1 常见问题解决方案

问题1:运行时报Module not found

  • 解决方案:用java --list-modules查看可用模块,重新运行jlink添加缺失模块

问题2:IDEA无法识别JRE

  • 检查点:
    • JRE路径是否包含完整的bin/java可执行文件
    • 文件权限是否正确(特别是Linux/macOS系统)

问题3:生成的JRE体积过大

  • 优化方案:
    • 使用--compress=2
    • 排除不需要的模块
    • 添加--strip-debug移除调试信息

4.2 版本管理建议

  1. 为不同项目维护不同的JRE配置
  2. 将jlink命令写入脚本文件(如build-jre.sh)方便复用
  3. 在项目文档中记录所需的模块列表

4.3 安全注意事项

  • 定期更新基础JDK获取安全补丁
  • 最小化模块原则:只添加确实需要的模块
  • 生产环境建议禁用--strip-debug以便问题诊断

5. 性能对比与实测数据

我们对比了不同配置JRE的运行效果:

JRE类型体积启动时间内存占用
传统JRE210MB1.2s45MB
全模块JRE180MB1.1s42MB
精简JRE(仅java.base)32MB0.8s28MB
优化版(java.base+压缩)25MB0.9s30MB

测试环境:JDK 18.0.1,Intel i7-1165G7,16GB RAM

在实际微服务项目中,使用定制JRE后:

  • 容器镜像大小减少60%
  • 冷启动时间缩短40%
  • 内存开销降低35%
http://www.jsqmd.com/news/852709/

相关文章:

  • 消防工程企业如何做新媒体AI智能获客?2026全网推广指南与服务商盘点 - 优质企业观察收录
  • 别再只用scatter了!用Matlab绘制带密度信息的散点图,让你的数据可视化更专业
  • 从VGG到ResNet:为什么你的100层网络效果还不如20层?聊聊梯度消失与‘捷径’的艺术
  • 2026 机器人即服务(RaaS)主流供应商全景评测 —— 万机易租领跑全场景轻量化升级 - 奔跑123
  • 告别命令行恐惧:用DataGrip在Ubuntu 22.04的MySQL里建库、授权、查数据,一篇搞定
  • 怎么远程操作另一台手机 手机能远程控制别的手机吗
  • 健身房私教管理系统 (二):多角色路由分发与实体扩展表设计
  • 长文本处理技术综述:突破上下文限制
  • BBH基准测试结果反常?DeepSeek-R1推理延迟飙升47%的真实原因,工程师已连夜回滚
  • 2026年Word生成完全指南:4种方法从零到自动化,效率提升10倍
  • VAP技术深度解析:从硬件解码到跨平台特效动画的完整实现方案
  • 2026年的专业床垫,从平价到高端究竟该怎么选?
  • 新手避坑指南:用STM32CubeMX和Keil5给NUCLEO-F411RE点亮0.96寸OLED(附完整工程源码)
  • EG2133全桥驱动自举电路翻车实录:从电容烧毁到稳定运行的完整调试过程
  • UVM约束进阶玩法:用randc、solve...before和动态约束打造更‘聪明’的测试序列
  • HermesAgent工具连接Taotoken的配置要点与排错指南
  • 石家庄合同纠纷律师实操解析与胜诉案例参考 - 奔跑123
  • 信噪比计算实战指南:从原理到代码实现
  • 终极指南:如何用3分钟将任何网页转换为可编辑的Figma设计稿?
  • 终极滚动控制指南:如何为Mac触控板和鼠标设置独立滚动方向
  • QGIS点云处理避坑指南:从LAS文件到精准地图投影,我用LAStools插件踩过的那些雷
  • 地暖行业如何做线上推广获客?2026全网获客指南与服务商盘点 - 优质企业观察收录
  • 石家庄离婚纠纷实操参考:如何匹配靠谱代理律师 - 奔跑123
  • 3分钟快速上手Inter字体:免费开源字体如何提升你的数字产品体验
  • Midjourney年付优惠不是终点——而是AI绘图成本控制起点:构建可持续提示工程工作流,ROI提升3.8倍
  • 哈尔滨中医皮肤科专家出诊机构专业权威排行 - 奔跑123
  • NFS服务器搭建与配置指南:从原理到生产环境实践
  • 基于SSD202D的摩托车智能仪表方案:从芯片选型到量产实战
  • 2026年看图软件选型指南:8款主流工具横向测评,格式兼容/性能/专业能力全对比(附工具大全)
  • CTFshow F5杯MISC题复盘:从‘大小二维码’到‘GoodNight’,手把手带你拆解那些‘脑洞’背后的技术点