You need to enable JavaScript to run this app. 使用alternatives切换Java时如何保留/etc/alternatives/jre软链接
优惠活动
大模型
产品
解决方案
定价
更多

使用alternatives切换Java时如何保留/etc/alternatives/jre软链接

问题根源

实际是因为Corretto 8的安装包在注册系统alternatives条目时配置不完整:没有把对应版本的jre路径设为java_sdk主组的联动从属链接。而Corretto 11的安装包配全了这套联动逻辑,所以切到Java11时系统会自动生成jre相关软链,切回Java8时因为找不到对应的联动配置,就会把已经生成的jre软链直接删掉。

配置实现步骤

用系统原生的alternatives从属链接机制补全缺失的配置,就能实现切换Java版本时软链自动适配、且不会被删除的效果,不需要写自定义脚本做软链维护。

  1. 给Corretto 8的java_sdk条目补上jre联动配置
    执行命令:
    alternatives --install /usr/lib/jvm/java java_sdk /usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64 1 \
      --slave /usr/lib/jvm/jre jre /usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/jre
    
    参数说明:
    • 沿用系统原生使用的java_sdk组、主链接路径/usr/lib/jvm/java,不改动原有系统结构
    • 优先级设为1,低于Java11的优先级
    • 从属配置绑定Corretto8对应的jre实际路径,java_sdk切换时会自动同步更新这个jre链接
  2. 给Corretto 11的java_sdk条目补上jre联动配置
    执行命令:
    alternatives --install /usr/lib/jvm/java java_sdk /usr/lib/jvm/java-11-amazon-corretto 2 \
      --slave /usr/lib/jvm/jre jre /usr/lib/jvm/java-11-amazon-corretto
    
    这里的jre路径对应Java11的实际安装根目录(Java11没有独立的jre子文件夹,jre内容直接放在根目录下)。
效果验证

配置完成后直接测试切换逻辑即可:

  • 切到Java8:执行alternatives --config java选择Java8选项,逐次检查链路:
    • /usr/lib/jvm/jre 软链正常存在,指向 /etc/alternatives/jre
    • /etc/alternatives/jre 软链指向 /usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/jre
    • 能正常访问对应版本的证书文件 /usr/lib/jvm/jre/lib/security/cacerts
  • 切到Java11:执行alternatives --config java选择Java11选项,逐次检查链路:
    • /usr/lib/jvm/jre 软链不会被删掉,依然指向 /etc/alternatives/jre
    • /etc/alternatives/jre 软链自动指向 /usr/lib/jvm/java-11-amazon-corretto
    • 能正常访问对应版本的证书文件 /usr/lib/jvm/jre/lib/security/cacerts
注意事项
  • 重新执行alternatives安装命令只是补全条目信息,不会覆盖你当前已经选好的默认Java版本
  • 这套配置和系统原生alternatives的运行逻辑完全一致,后续Java版本升级时不会出现配置失效的问题
  • 不需要手动定期维护软链,所有链路的变化都是跟随默认Java版本自动完成的,完全符合预期的链路结构

内容的提问来源于stack exchange,提问作者brian661

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.30 06:06:05