在 Windows 10 上的 WSL2 上使用 JDK 的正确方法是啥?

Posted

技术标签:

【中文标题】在 Windows 10 上的 WSL2 上使用 JDK 的正确方法是啥?【英文标题】:What is the proper way of using JDK on WSL2 on Windows 10?在 Windows 10 上的 WSL2 上使用 JDK 的正确方法是什么? 【发布时间】:2020-12-31 03:25:54 【问题描述】:

我已经在 WSL 上安装了 Ubuntu 20.4 LTS。我的 Windows 10 已经安装了 JDK。我需要在 WSL 上的 ubuntu 上安装 JDK,还是可以在 Ubuntu 中使用 Windows 10 JDK?您如何在 WSL 上进行 Java 编程?哪个是正确的方法?

我只是想知道是否需要在 Linux 上重新安装所有开发工具和二进制文件,这会不会占用大量空间并占用大量 CPU/Ram 资源?

【问题讨论】:

安装的东西不会占用 CPU/RAM,除非你使用它们——它们只会占用空间。 是的,但是在 wsl 上运行 JDK 和在 windows 上运行 JDK 不会占用 CPU/RAM?但是,是的,我明白你在说什么,你是对的 对于它的价值,here 是一篇比较原生 JDK 与 WSL2 jdk 在命令行和 IntelliJ 内部的性能的中等帖子。与往常一样,您的里程可能会因您的配置而异 【参考方案1】:

以具有 sudo 权限或 root 的用户身份运行以下命令来更新包索引并安装 OpenJDK 11 JDK 包:

$ sudo apt update
$ sudo apt install openjdk-11-jdk

安装完成后,您可以通过检查Java版本来验证它:

$ java -version

输出应如下所示:

openjdk version "11.0.7" 2020-04-14
OpenJDK Runtime Environment (build 11.0.7+10-post-Ubuntu-3ubuntu1)
OpenJDK 64-Bit Server VM (build 11.0.7+10-post-Ubuntu-3ubuntu1, mixed mode, sharing)

设置 JAVA_HOME 环境变量: OpenJDK 11 位于 /usr/lib/jvm/java-11-openjdk-amd64/bin/java

找到首选 Java 安装路径后,打开 /etc/environment 文件:

$ sudo nano /etc/environment

假设您要将 JAVA_HOME 设置为指向 OpenJDK 11,请在文件末尾添加以下行:

JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"

要使更改在您当前的 shell 上生效,您可以注销并登录或运行以下源命令:

$ source /etc/environment

验证 JAVA_HOME 环境变量是否设置正确:

$ echo $JAVA_HOME

您应该会看到 Java 安装的路径:

/usr/lib/jvm/java-11-openjdk-amd64

作为参考,您可以点击下面的此链接 How to Install Java on Ubuntu 20.04

【讨论】:

感谢您的回答。但我实际上并没有要求这样做,特别是 Linux 安装过程。【参考方案2】:

在 WSL 上安装或使用 Java 没有“适当”的方式(如 支持推荐 JDK 提供商)。我找不到任何官方建议。

但是,可以从 WSL 安装和使用 Oracle JDK for Windows 安装,或者从 Ubuntu 包管理器将 OpenJDK Java 安装到您的 WSL 世界中。

我只是想知道是否需要在 Linux 上重新安装所有开发工具和二进制文件,这会不会占用大量空间并占用大量 CPU/Ram 资源?

见上文。但请注意,如果您运行两种 JVM同时,您只会“占用 CPU/RAM”。

参考资料:

Installing Oracle JDK on Windows subsystem for Linux Java JDK 11 install script for Windows Subsystem for Linux (WSL) Windows Subsystem for Linux Java Setup ... 使用 Ubuntu 软件包系统。

(如果以上内容不能解决您的问题,还有更多关于此主题的文章。)

【讨论】:

是的,你是对的,在 Windows 或 Oracle 上似乎没有关于此的文档。那么,您是说我可以在 Windows 和 WSL 中同时使用 JDK 而无需担心?顺便说一句,非常感谢您的回答。 这就是我要说的。 (或者更准确地说,这就是其他人所说的。)【参考方案3】:

我们可以在 wsl2 中使用那个 Windows JDK。我们应该将此添加到/etc/environment

JAVA_HOME=/mnt/c/Program Files/Java/jdk-11.0.8/bin/

通过添加这个 bin 文件夹,我们可以运行常规命令,但附加 .exe 格式,例如:javac.exe hello.javajava.exe hello.java

如果您不喜欢这种方式,请添加如下别名:

alias java='java.exe'
alias javac='javac.exe'

我认为我们可以使用任何这样的 Windows 程序 :)

【讨论】:

以上是关于在 Windows 10 上的 WSL2 上使用 JDK 的正确方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

wsl2上的docker非常慢

对于使用 WSL2 进行签名的 git 提交,Windows 10 上的 Visual Studio Code 中没有 GPG 密码提示

带有 VSCode + WSL2 + Docker 的 Windows 上的 Git + SSH 密钥问题

断点无法通过 Windows 10 和 WSL2 上的 Visual Studio Code 在 Chrome 中调试 React 应用程序

无法连接到WSL2上的Landoop Docker容器

WSL2 上的 Maven 看不到 JAVA_HOME