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

gxwragnw  于 2023-06-23  发布在  Windows
关注(0)|答案(3)|浏览(153)

我的Windows 10机器最近强行将我升级到新的“Creators Update”版本的Windows,“About your PC”小部件现在报告我的操作系统版本为“1703”。
我想我会在Windows上使用Linux/Ubuntu的Windows子系统来编译我的Gradle项目。
我在c:\jvm\jdk1.8.0_102上安装了Windows JDK。
在MinGW终端窗口("git bash")中,我可以设置一个JAVA_HOME并从源目录执行gradle Package 器脚本,它就可以工作了:

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可以正常工作。

    • 问题是**:

有没有什么方法可以使用我之前安装的WindowsJDK从“Bash on Ubuntu on Windows”终端运行我的gradlew脚本?

  • 请注意 *:

我特别想问的是,是否有可能让我的Gradle脚本使用Windows JDK运行,而不是使用WSL安装的Ubuntu/Linux JDK。我知道我可能可以通过在Windows Sunbsystem for Linux中安装Linux JDK来运行我的gradle Package 器脚本,但我试图弄清楚是否有可能使用Windows JDK运行我的构建。

monwx1rj

monwx1rj1#

为了确保我没有错过任何明显的东西,我下载了Windows和Linux的Android Studio(其中包含JDK,或者更确切地说,用于构建Android项目的最小Java工具集),并将它们安装到两个不同的目录: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。一切都如预期的那样工作。
然后我将Android Studio for Windows复制到~/android-studio-windows,并将JAVA_HOME设置为~/android-studio-windows/jre。它给了我相同的invalid directory错误信息,所以我认为WSL不能像现在那样使用Windows工具(好吧,至少目前不能)。
所以,如果你的目标是在WSL中使用gradle,我认为你需要在WSL中安装OpenJDK for Linux(或类似的东西)。

zwghvu4y

zwghvu4y2#

如果您使用的是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
mnemlml8

mnemlml83#

当您从WSL内部启动./gradlew时,它会尝试从$JAVA_HOME Java安装运行Java二进制文件。这是什么样的安装?它包含Windows二进制还是Linux二进制?
如果问题简化为:如何从WSL运行Windows二进制文件。
那么答案是:“你不能-这是不支持的”。

相关问题