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

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

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

    https://github.com/version-fox/vfox
    qilme
        4
    qilme  
       2025 年 7 月 17 日 via Android
    在 git for windows 或者 msys2 的 bash 环境里使用 sdkman ,这样可以在本机安装 jdk
    dcsuibian
        5
    dcsuibian  
       2025 年 7 月 17 日   ❤️ 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  
       2025 年 7 月 17 日
    我和 gpt 写了个脚本做切换
    jasonkayzk
        7
    jasonkayzk  
       2025 年 7 月 17 日   ❤️ 1
    Foxkeh
        8
    Foxkeh  
       2025 年 7 月 17 日
    这个不是在 IDE 里面手动指定就可以了么
    Sezxy
        9
    Sezxy  
       2025 年 7 月 17 日   ❤️ 1
    @jasonkayzk #7 兄弟,看标题,我看完 readme 都是说 macos 的
    Sezxy
        10
    Sezxy  
       2025 年 7 月 17 日
    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  
       2025 年 7 月 17 日
    无脑 scoop ,现在在用,一条命令安装,一条命令切换,爽死了
    chuunshii
        12
    chuunshii  
       2025 年 7 月 17 日
    scoop
    guyeu
        13
    guyeu  
       2025 年 7 月 17 日
    以 Java 的向前兼容性,有什么场景需要切换呢?
    jasonkayzk
        14
    jasonkayzk  
       2025 年 7 月 17 日
    @Goooooos #9 不好意思,我以为 jenv 是跨平台的,我的。
    Ghostisbored
        15
    Ghostisbored  
    OP
       2025 年 7 月 17 日
    @guyeu 我一般开发其他语言 比如 ts 、python 我的方式是在 wsl 中 用对应的多版本管理工具 但是本身的编辑器是在 windos 这样很方便 但是 java 目前发现我上面说的那些问题 特别是在新建项目 导入一些开源项目的时候遇到很多不同的版本 我们是以 java8 为主可能要进行一些兼容上的修改
    Ghostisbored
        16
    Ghostisbored  
    OP
       2025 年 7 月 17 日
    多谢大家的推荐 经过我的尝试我也使用 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  
       2025 年 7 月 17 日
    可以看下 mise 是不是可以做到?现在我遇到任何版本管理需求,都优先考虑它。
    https://mise.jdx.dev/
    Lockroach
        18
    Lockroach  
       2025 年 7 月 17 日
    如果强调管理的话,感觉 docker 和 dev container 应该不错
    lvlongxiang199
        19
    lvlongxiang199  
       2025 年 7 月 17 日
    用 idea 下载/切换不同的 jdk

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

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