Ghostisbored
V2EX  ›  Java

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

  •  
  •   Ghostisbored · Jul 16, 2025 · 7031 views
    This topic created in 474 days ago, the information mentioned may be changed or developed.
    我先说下我自己尝试过的
    1 、直接在 windows 下安装多个版本 但是这样会出现一个问题 高版本的 jdk 会覆盖低版本的一些环境变量
    比如 idea 直接读到的是高版本 哪怕切换到低版本的路径也有一些问题
    2 、wsl 方案 在 wsl 中使用 sdkman 安装多版本 idea 指向对应的 jdk 安装路径 ,但是这样有非常多的兼容问题 比如 windows 读取 liunx 的文件路径经常读取不到 maven 编译也有各种兼容问题
    所以想问问大家的大家怎么管理的 谢谢
    39 replies  •  2025-10-20 17:15:23 +08:00
    Sezxy
    Sezxy
    Jul 16, 2025 via Android
    1
    scoop
    Ghostisbored
    Ghostisbored
    OP
    Jul 16, 2025
    2
    @Goooooos 谢谢 我瞧瞧
    yeqiling
    yeqiling
    Jul 16, 2025 via Android
    3
    可以考虑使用本站大佬实现的 vfox ,挺好用的

    https://github.com/version-fox/vfox
    qilme
    qilme
    Jul 17, 2025 via Android
    4
    在 git for windows 或者 msys2 的 bash 环境里使用 sdkman ,这样可以在本机安装 jdk
    dcsuibian
    dcsuibian
    Jul 17, 2025❤️6
    5
    下载 8 、11 、17 、21 的 zip 版本的 jdk ,然后解压成对应的文件夹。JAVA_HOME 配的 21 的,因为主用 21 。
    一般用不着切换,真要切换的话,在 IDEA 的 Project Structure 里面改一下就好了吧,而且我记得 IDEA 会解析 pom.xml 来选择 jdk 版本的
    相比于 Python 和 Node.js ,我感觉 jdk 版本不太需要管理
    HENQIGUAI
    HENQIGUAI
    Jul 17, 2025
    6
    我和 gpt 写了个脚本做切换
    jasonkayzk
    jasonkayzk
    Jul 17, 2025❤️1
    7
    Foxkeh
    Foxkeh
    Jul 17, 2025
    8
    这个不是在 IDE 里面手动指定就可以了么
    Sezxy
    Sezxy
    Jul 17, 2025❤️1
    9
    @jasonkayzk #7 兄弟,看标题,我看完 readme 都是说 macos 的
    Sezxy
    Sezxy
    Jul 17, 2025
    10
    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
    qinfengge
    Jul 17, 2025
    11
    无脑 scoop ,现在在用,一条命令安装,一条命令切换,爽死了
    chuunshii
    chuunshii
    Jul 17, 2025
    12
    scoop
    guyeu
    guyeu
    Jul 17, 2025
    13
    以 Java 的向前兼容性,有什么场景需要切换呢?
    jasonkayzk
    jasonkayzk
    Jul 17, 2025
    14
    @Goooooos #9 不好意思,我以为 jenv 是跨平台的,我的。
    Ghostisbored
    Ghostisbored
    OP
    Jul 17, 2025
    15
    @guyeu 我一般开发其他语言 比如 ts 、python 我的方式是在 wsl 中 用对应的多版本管理工具 但是本身的编辑器是在 windos 这样很方便 但是 java 目前发现我上面说的那些问题 特别是在新建项目 导入一些开源项目的时候遇到很多不同的版本 我们是以 java8 为主可能要进行一些兼容上的修改
    Ghostisbored
    Ghostisbored
    OP
    Jul 17, 2025
    16
    多谢大家的推荐 经过我的尝试我也使用 scoop 了 结合 @Goooooos 兄弟的命令 我在 2 条说明
    如果出现类似 Couldn't find manifest for 'temurin8-jdk'
    可以试试这个命令 :scoop bucket add java https://github.com/ScoopInstaller/Java
    如果你以前已经安装了 jdk 因为设置了系统变量 但是 scoop 改变的是用户变量 导致切换到 scoop 版本 不能生效 可以删除以前的系统变量全部由 scoop 管理
    archean
    archean
    Jul 17, 2025
    17
    可以看下 mise 是不是可以做到?现在我遇到任何版本管理需求,都优先考虑它。
    https://mise.jdx.dev/
    Lockroach
    Lockroach
    Jul 17, 2025
    18
    如果强调管理的话,感觉 docker 和 dev container 应该不错
    lvlongxiang199
    lvlongxiang199
    Jul 17, 2025
    19
    用 idea 下载/切换不同的 jdk

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

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