Вызов оболочки Gradle в WSL с Windows JDK - PullRequest
0 голосов
/ 09 ноября 2019

У меня установлена ​​Windows JDK на C:\Program Files\Java\jdk-11.0.1+13. У меня нет установленной Linux Java или Gradle. Я хочу вызвать ./gradlew (в проекте с оболочкой Gradle) в WSL и заставить его использовать Windows JDK.

Я подумал, что если бы я мог вызвать java в WSL, это бы сработало, поэтому я сделал символическую ссылку на java.exe:

ln -s '/mnt/c/Program Files/Java/jdk-11.0.1+13/bin/java.exe' /bin/java

Однако в настоящее время это не работает должным образом( WSL / # 3999 ). Обходной путь, описанный в этом выпуске, заключается в создании сценария переадресации на java.exe, например, так:

exec '/mnt/c/Program Files/Java/jdk-11.0.1+13/bin/java.exe' "$@"

С этим я могу вызывать java из WSL, казалось бы, идеально:

$ which java
/bin/java

$ java --version
openjdk 11.0.1 2018-10-16
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.1+13)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.1+13, mixed mode)

Но даже при такой работе вызов ./gradlew приводит к ошибке:

$ ./gradlew
Error: Could not find or load main class org.gradle.wrapper.GradleWrapperMain
Caused by: java.lang.ClassNotFoundException: org.gradle.wrapper.GradleWrapperMain

Эта ошибка не возникает при вызове cmd.exe /c gradlew.bat.

Я полагаю, что ./gradle/wrapper/gradle-wrapper.jar не добавляется должным образом в путь к классам, но я не могу понять, почему.

Обновление: Я прав, чтобаночка не добавляется в путь к классам. ./gradlew пытается выполнить exec

java -Xmx64m -Dorg.gradle.appname=gradlew -classpath /mnt/c/project/gradle/wrapper/gradle-wrapper.jar org.gradle.wrapper.GradleWrapperMain

Поскольку java на самом деле является сценарием, который я разместил выше, java.exe вызывается с теми же аргументами. java.exe, конечно, не может разрешить путь /mnt/c/project/gradle/wrapper/gradle-wrapper.jar, поэтому выполнение завершается неудачно. Я не уверен, есть ли способ решить эту проблему вообще.

...