Як користуватися установкою Windows на Java від BashOnWindows10?


10

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

баш

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. Дивіться цю помилку для обговорення та деякі проблеми, що оточують
eckes

Відповіді:


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.