V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Ghostisbored
V2EX  ›  Java

兄弟们 现在 windows 下管理多版本的 jdk 最优解是什么呢

  •  
  •   Ghostisbored · 46 天前 · 3953 次点击
    这是一个创建于 46 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我先说下我自己尝试过的
    1 、直接在 windows 下安装多个版本 但是这样会出现一个问题 高版本的 jdk 会覆盖低版本的一些环境变量
    比如 idea 直接读到的是高版本 哪怕切换到低版本的路径也有一些问题
    2 、wsl 方案 在 wsl 中使用 sdkman 安装多版本 idea 指向对应的 jdk 安装路径 ,但是这样有非常多的兼容问题 比如 windows 读取 liunx 的文件路径经常读取不到 maven 编译也有各种兼容问题
    所以想问问大家的大家怎么管理的 谢谢
    38 条回复    2025-07-29 14:44:33 +08:00
    Goooooos
        1
    Goooooos  
       46 天前 via Android
    scoop
    Ghostisbored
        2
    Ghostisbored  
    OP
       46 天前
    @Goooooos 谢谢 我瞧瞧
    yeqiling
        3
    yeqiling  
       46 天前 via Android
    可以考虑使用本站大佬实现的 vfox ,挺好用的

    https://github.com/version-fox/vfox
    qilme
        4
    qilme  
       46 天前 via Android
    在 git for windows 或者 msys2 的 bash 环境里使用 sdkman ,这样可以在本机安装 jdk
    dcsuibian
        5
    dcsuibian  
       46 天前   ❤️ 6
    下载 8 、11 、17 、21 的 zip 版本的 jdk ,然后解压成对应的文件夹。JAVA_HOME 配的 21 的,因为主用 21 。
    一般用不着切换,真要切换的话,在 IDEA 的 Project Structure 里面改一下就好了吧,而且我记得 IDEA 会解析 pom.xml 来选择 jdk 版本的
    相比于 Python 和 Node.js ,我感觉 jdk 版本不太需要管理
    HENQIGUAI
        6
    HENQIGUAI  
       46 天前
    我和 gpt 写了个脚本做切换
    jasonkayzk
        7
    jasonkayzk  
       46 天前   ❤️ 1
    Foxkeh
        8
    Foxkeh  
       46 天前
    这个不是在 IDE 里面手动指定就可以了么
    Goooooos
        9
    Goooooos  
       46 天前   ❤️ 1
    @jasonkayzk #7 兄弟,看标题,我看完 readme 都是说 macos 的
    Goooooos
        10
    Goooooos  
       46 天前
    OP 发帖子前几个小时,我刚问完 gemini ,给出的方案中,选了 scoop


    以下命令在 powershell 中执行

    1. Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
    2. Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression
    3. scoop bucket add java
    4. scoop search openjdk
    5. scoop install openjdk17
    6. scoop install openjdk21
    7. scoop reset openjdk17
    8. scoop reset openjdk21
    qinfengge
        11
    qinfengge  
       46 天前
    无脑 scoop ,现在在用,一条命令安装,一条命令切换,爽死了
    chuunshii
        12
    chuunshii  
       46 天前
    scoop
    guyeu
        13
    guyeu  
       46 天前
    以 Java 的向前兼容性,有什么场景需要切换呢?
    jasonkayzk
        14
    jasonkayzk  
       46 天前
    @Goooooos #9 不好意思,我以为 jenv 是跨平台的,我的。
    Ghostisbored
        15
    Ghostisbored  
    OP
       46 天前
    @guyeu 我一般开发其他语言 比如 ts 、python 我的方式是在 wsl 中 用对应的多版本管理工具 但是本身的编辑器是在 windos 这样很方便 但是 java 目前发现我上面说的那些问题 特别是在新建项目 导入一些开源项目的时候遇到很多不同的版本 我们是以 java8 为主可能要进行一些兼容上的修改
    Ghostisbored
        16
    Ghostisbored  
    OP
       46 天前
    多谢大家的推荐 经过我的尝试我也使用 scoop 了 结合 @Goooooos 兄弟的命令 我在 2 条说明
    如果出现类似 Couldn't find manifest for 'temurin8-jdk'
    可以试试这个命令 :scoop bucket add java https://github.com/ScoopInstaller/Java
    如果你以前已经安装了 jdk 因为设置了系统变量 但是 scoop 改变的是用户变量 导致切换到 scoop 版本 不能生效 可以删除以前的系统变量全部由 scoop 管理
    archean
        17
    archean  
       46 天前
    可以看下 mise 是不是可以做到?现在我遇到任何版本管理需求,都优先考虑它。
    https://mise.jdx.dev/
    Lockroach
        18
    Lockroach  
       46 天前
    如果强调管理的话,感觉 docker 和 dev container 应该不错
    lvlongxiang199
        19
    lvlongxiang199  
       46 天前
    用 idea 下载/切换不同的 jdk

    https://imgur.com/a/AEGwZmE
    Binwalker
        20
    Binwalker  
       46 天前
    mise 秒杀所有
    chendy
        21
    chendy  
       46 天前
    十二年老懒狗选择直接 idea 安装配置,反正离开 IDE 也不写 java
    wxyrrcj
        22
    wxyrrcj  
       46 天前
    vfox +1
    Ghostisbored
        23
    Ghostisbored  
    OP
       46 天前
    @chendy 已经变得有强迫症了 不弄得舒舒服服得写代码都不爽
    Bamboodu
        24
    Bamboodu  
       45 天前
    其实没必要折腾,都是切换 jdk 在 idea 里面切,平时命令行运行 java 程序的可能性几乎为 0
    Need4more
        25
    Need4more  
       45 天前
    1. idea 和 vscode 都带了 java 的安装器
    2. scoop
    xrxb
        27
    xrxb  
       45 天前
    万年 java8 不需要切换
    Belmode
        28
    Belmode  
       45 天前
    在开发机器上,从来不把 java 注册到环境变量中,直接在开发工具中配置一下不就好了
    Need4more
        29
    Need4more  
       45 天前
    @xrxb 很符合我对 java 程序员的刻板印象,固步自封,拒绝新事物
    inhzus
        30
    inhzus  
       45 天前
    scoop / mise
    edsion1107
        31
    edsion1107  
       45 天前
    用 mise 吧,生态感觉已经非常完善了。
    vfox 总是大改,用起来不敢放心升级,而且 JavaToolchain 的自动发现也不支持: https://docs.gradle.org/current/userguide/toolchains.html#sec:auto_detection
    edsion1107
        32
    edsion1107  
       45 天前
    还有一点,mise 的维护非常积极和及时,我之前反馈的 BUG ,睡一觉起来就发现已经修复并上线了。
    laminux29
        33
    laminux29  
       45 天前
    你就不应该在一个 OS 里安装不同的 jdk 、Python 等等。

    现在有虚拟化技术了,每个虚拟机,安装一个版本,这不难吧?
    CodeCodeStudy
        34
    CodeCodeStudy  
       45 天前
    不需要啊,直接在脚本里设置环境变量 JAVA_HOME 和 PATH 就好了啊
    Ghostisbored
        35
    Ghostisbored  
    OP
       45 天前
    @laminux29 我一般用 nvm pyenv sdkman 是一样的 基本不会污染的 要维护一些老项目 新的项目会尝试新版本
    Ghostisbored
        36
    Ghostisbored  
    OP
       45 天前
    @Belmode 这可能是个办法 让 idea 自己去发现就好了
    dongdong12345
        37
    dongdong12345  
       45 天前
    @lvlongxiang199
    一样,本地不需要配环境变量。都是用 idea 去管理
    uselesswater
        38
    uselesswater  
       34 天前 via Android
    jdk 都用解压版本,没有什么管理的难度,想用哪个就切换就行了,一定要配置环境变量,那就配置主用的一个。其他的不用配置,其他的配置了也没用,他是根据在 path 里面的顺序从上到下读取,先读到那个,就是用哪个版本,实在需要再更换环境变量。在 ide 里面切换 jdk 版本,没有任何难度。你说的路径问题,对不起,没遇到过,切换的时候是不是没有正确切换。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5328 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 08:12 · PVG 16:12 · LAX 01:12 · JFK 04:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.