You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows WSL Ubuntu 22无法识别Windows已升级的Java版本求助

问题:无需重新下载更新WSL Ubuntu中的Java版本

我是计算机科学课程的新手,对环境配置一头雾水。原本Windows和WSL Ubuntu 22里都装了Java 8,后来发现Ubuntu里需要用Java 9及以上才支持的jshell做测试。我在Windows上下载了最新的Java 19,但Ubuntu还是识别不了,一直用Java 8。想求不用重新下载就能更新Ubuntu中Java版本的方法。

Ubuntu终端输出

hejin@LAPTOP-8I6A5M2K:~/cs2030s$ java.exe -version
java version "1.8.0_351"
Java(TM) SE Runtime Environment (build 1.8.0_351-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.351-b10, mixed mode)
hejin@LAPTOP-8I6A5M2K:~/cs2030s$ javac.exe -version
javac 1.8.0_351
hejin@LAPTOP-8I6A5M2K:~/cs2030s$ jshell.exe
jshell.exe: command not found
hejin@LAPTOP-8I6A5M2K:~/cs2030s$ jshell
Command 'jshell' not found, but can be installed with:
sudo apt install openjdk-11-jdk-headless  # 版本 11.0.17+8-1ubuntu2~22.04,或
sudo apt install openjdk-17-jdk-headless  # 版本 17.0.5+8-2ubuntu1~22.04
sudo apt install openjdk-18-jdk-headless  # 版本 18.0.2+9-2~22.04
sudo apt install openjdk-19-jdk-headless  # 版本 19.0.1+10-1ubuntu1~22.04

(说实话我搞不懂为啥别人只需要输入java Hello.txt和javac Hello.txt,我却必须加.exe后缀)

Windows命令提示符输出

C:\Users\User>java -version
java version "19.0.1" 2022-10-18
Java(TM) SE Runtime Environment (build 19.0.1+10-21)
Java HotSpot(TM) 64-Bit Server VM (build 19.0.1+10-21, mixed mode, sharing)

C:\Users\User>javac -version
javac 19.0.1

C:\Users\User>jshell -version
jshell 19.0.1

C:\Users\User>jshell
|  欢迎使用 JShell -- 版本 19.0.1
|  输入 /help intro 查看介绍

jshell> 1 + 1
$1 ==> 2

jshell>

我对网上说的修改环境变量路径的说法很困惑……检查高级系统设置时,jdk19的路径已经在里面了。
[系统设置环境变量截图]


解决方案

一、直接复用Windows上的Java 19(无需重新下载)

WSL可以直接访问Windows的文件系统,步骤如下:

  1. 找到Windows上Java 19的安装路径,通常默认路径为C:\Program Files\Java\jdk-19.0.1,对应WSL中的路径是/mnt/c/Program Files/Java/jdk-19.0.1。
  2. 临时切换版本(仅当前终端会话有效):
    在WSL终端执行以下命令:
    export PATH="/mnt/c/Program Files/Java/jdk-19.0.1/bin:$PATH"
    export JAVA_HOME="/mnt/c/Program Files/Java/jdk-19.0.1"
    
    执行后输入java -version和jshell验证是否生效。
  3. 永久生效(所有终端会话通用):
    • 编辑用户主目录下的.bashrc配置文件:
      nano ~/.bashrc
      
    • 在文件末尾添加以下两行:
      export PATH="/mnt/c/Program Files/Java/jdk-19.0.1/bin:$PATH"
      export JAVA_HOME="/mnt/c/Program Files/Java/jdk-19.0.1"
      
    • 保存退出(按Ctrl+O后回车,再按Ctrl+X),然后执行source ~/.bashrc使改动立即生效。

二、关于必须加.exe后缀的问题

你输入java.exe调用的是Windows系统中的Java 8程序(WSL默认会挂载Windows的环境变量),而直接输入java调用的是Ubuntu本地的Java 8。按照上面的方法配置后,java命令会优先调用Windows上的Java 19,无需再添加.exe后缀。

三、可选:使用Ubuntu本地OpenJDK(若跨系统调用有问题)

如果后续觉得跨系统调用存在兼容性问题,也可以直接用Ubuntu包管理器安装OpenJDK 19,命令如下:

sudo apt update
sudo apt install openjdk-19-jdk-headless

安装完成后,通过以下命令切换默认Java版本:

sudo update-alternatives --config java
sudo update-alternatives --config javac

按照终端提示输入对应Java 19的编号即可完成切换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 13:34:38