Как использовать Windows для установки Java из BashOnWindows10?


10

Я не могу запустить версию java.exe для Windows из BashOnWindows10. Он присутствует в PATH, но вызов молча завершается неудачей. Моя цель - избежать повторной установки JDK / JRE в WSL. Поскольку я запускаю обновление Creator, я ожидал, что он сможет вызвать любое приложение Windows. Есть идеи, почему это происходит? Однако я могу успешно запустить установку Python для Windows.

удар

username@PC:~$ which java.exe
/mnt/c/ProgramData/Oracle/Java/javapath/java.exe

username@PC:~$ java.exe
username@PC:~$         <<<nothing happens

username@PC:~$ which python.exe
/mnt/c/Python34/python.exe

username@PC:~$ python.exe
Unable to translate current working directory. Using C:\WINDOWS\system32
Python 3.4.0 (v3.4.0:04f714765c13, Mar 16 2014, 19:25:23) [MSC v.1600 64 bit 
(AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

cmd.exe

C:\Users\username>java -version
java version "1.8.0_31"
Java(TM) SE Runtime Environment (build 1.8.0_31-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.31-b07, mixed mode)

Это не связано с Java, это проблема всех двоичных файлов Windows. Смотрите эту ошибку для обсуждения и некоторых
обходных путей

Ответы:


8

Вот как я только что сделал Java "просто работать" для моей установки WSL.

ln -s /mnt/c/Program\ Files\ \(x86\)/Java/jre1.8.0_151/bin/java.exe /bin/java

Это создает символическую ссылку в вашей /binпапке на двоичный файл Windows Java. Всякий раз, когда WSL пытается вызвать Java сейчас, он перенаправляется на версию Windows. Возможно, вам придется скорректировать путь, поскольку версии Java изменятся в будущем.


Превосходно ! До: Java-версия дает Command 'Java' not foundПосле: Java - версия дает java version "1.8.0_151"Я хотел бы получить этот ответ как 10 баллов вместо 1!
Boardtc

1
Просто напомнить, что это «запутает» пути и пути, используемые в вашей Java-программе или как свойства / входные данные. Например, «/tmp/somefile.txt» будет, например, «c: /tmp/somefile.txt», когда ваша Windows Java пытается выполнить его, и в результате файл не найден!
Андерс

2

Эта проблема связана с тем, что WSL не поддерживает ярлыки Windows в обновлении Creator. /mnt/c/ProgramData/Oracle/Java/javapath/java.exeна самом деле это ярлык к каталогу установки, который C:\Program Files\Java\jre1.8.0_31\binв моем случае. Вызов Java из фактического пути установки, кажется, работает как ожидалось.

Эта проблема решена в сборке 16193


0

Если вы хотите выполнить свой java.exe внутри подсистемы linux, вы можете выполнить следующий ответ: https://stackoverflow.com/a/54151117/2751561

Если вам нужно наоборот, вы можете вызвать java bin на cmd следующим образом:

wsl java -version
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.