如何使用 Windows 上 Ubuntu 的 Windows JDK 构建我的 Gradle 项目?

How can I build my Gradle project using a Windows JDK from Ubuntu on Windows?

我的 Windows 10 机器最近强行将我升级到 windows 的新 "Creators Update" 版本,"About your PC" 小部件现在报告我的 OS 版本为"1703".

我想我会在 Windows 上使用 Linux / Ubuntu 的 Windows 子系统来编译我的 Gradle 项目。

我在 c:\jvm\jdk1.8.0_102 安装了 Windows JDK。

在我的 MinGW 终端 window ("git bash") 中,我可以设置一个 JAVA_HOME 并从我的源目录执行 gradle 包装器脚本,它就会正常工作:

export JAVA_HOME=/c/jvm/jdk1.8.0_102
./gradlew tasks

但我不知道如何用 WSL 做同样的事情。 打开 "Bash on Ubuntu on Windows" 终端,切换到我的源目录并调用以下命令:

export JAVA_HOME=/mnt/c/jvm/jdk1.8.0_102
./gradlew tasks

结果如下:

ERROR: JAVA_HOME is set to an invalid directory: /mnt/c/jvm/jdk1.8.0_102

Please set the JAVA_HOME variable in your environment to match the
location of your Java installation.

请注意 Windows JDK 运行 在 bash 终端中可以正常使用。在 Ubuntu 终端中执行 $JAVA_HOME/bin/java.exe -version 将正常工作。

问题是:

有什么方法可以使用我之前安装的 Windows JDK 从 "Bash on Ubuntu on Windows" 终端 运行 我的 gradlew 脚本。

请注意:

我特别想问一下是否可以使用 Windows JDK 而不是 Ubuntu/Linux [= 来获取我的 Gradle 脚本 运行ning 68=] 与 WSL 一起安装。 我知道我可以通过在 Linux Sunbsystem 中为 Linux 安装 Linux JDK 来 运行 我的 gradle 包装脚本,但我是试图弄清楚是否有可能 运行 我的构建使用 Windows JDK.

为了确保我没有遗漏任何明显的东西,我下载了 Android Studio(其中包含 JDK,或者更确切地说,用于构建 Android 项目)用于 Windows 和 Linux,并将它们安装到 2 个不同的目录:C:\Program Files\Android\Android Studio 中的 Windows 版本和 ~/android-studio 中的 Linux 版本.

在 WSL 内部,我首先将 JAVA_HOME 设置为 C:\Program Files\Android\Android Studio\jre 和 运行 gradlew。它给了我 invalid directory 错误信息。

接下来,我将 JAVA_HOME 设置为 ~/android-studio/jre。一切都按预期进行。

然后我将 Windows 的 Android Studio 复制到 ~/android-studio-windows,并将 JAVA_HOME 设置为 ~/android-studio-windows/jre。它给了我相同的 invalid directory 错误消息,所以我认为 WSL 不能像现在这样使用 Windows 工具(好吧,至少目前不能)。

因此,如果您的目标是在 WSL 中使用 gradle,我认为您需要在 WSL 中为 Linux(或类似的东西)安装 OpenJDK。

如果问题简化为:"how to run a windows binary from WSL".

答案是:"you can't - that's not supported".

如果您正在使用 WSL 并且您想要从 WSL 终端 运行 gradlew 那么您可以按照以下方式进行:

cmd.exe /c gradlew --version
cmd.exe /c gradlew :help
cmd.exe /c gradlew app:dependencies
cmd.exe /c gradlew app:dependencies | grep -i "com.android.support"

我正在使用 windows 版本:

rdey@surface-book:/mnt/c/Users/rdey/git/ici$ cmd.exe /c "systeminfo" | grep "^OS Version"
OS Version:                10.0.17763 N/A Build 17763