Jak korzystać z instalacji systemu Windows w Javie z BashOnWindows10?

10

Nie mogę uruchomić wersji java.exe systemu Windows z BashOnWindows10. Jest obecny w PATH, ale wywołanie nie powiedzie się po cichu. Moim celem jest uniknięcie konieczności ponownej instalacji JDK / JRE w WSL. Gdy uruchamiam aktualizację Twórcy, spodziewałem się, że będę mógł wywołać dowolną aplikację Windows. Wszelkie pomysły, dlaczego tak się dzieje? Jestem jednak w stanie pomyślnie uruchomić instalację Pythona w systemie Windows.

grzmotnąć

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)
Abhiram
źródło
Nie jest związany z Javą, jest problemem ze wszystkimi plikami binarnymi Windows. Zobacz ten błąd do dyskusji i kilka obejść
eckes

Odpowiedzi:

8

Oto jak sprawiłem, że Java „po prostu działa” w mojej instalacji WSL.

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

Powoduje to utworzenie dowiązania symbolicznego w /binfolderze do pliku binarnego Java systemu Windows. Ilekroć WSL próbuje teraz wywołać Javę, jest ona przekierowywana do wersji Windows. Prawdopodobnie będziesz musiał dostosować ścieżkę, ponieważ wersje Java będą się zmieniać w przyszłości.

detuur
źródło
Super ! Przed: Command 'Java' not foundWersja Java daje Po: Wersja Java daje java version "1.8.0_151"Chciałbym uzyskać więcej odpowiedzi niż 10 punktów zamiast 1!
boardtc
1
Tylko jedna głowa, że ​​to „pomyli” i ścieżki użyte w twoim programie Java lub jako właściwości / dane wejściowe. Np. „/Tmp/somefile.txt” będzie np. „C: /tmp/somefile.txt”, gdy Windows Java próbuje go uruchomić i nie można znaleźć pliku!
Anders
2

Ten problem występuje, ponieważ WSL nie obsługuje skrótów Windows w aktualizacji Twórcy. /mnt/c/ProgramData/Oracle/Java/javapath/java.exejest właściwie skrótem do aktualnego katalogu instalacyjnego, co C:\Program Files\Java\jre1.8.0_31\binw moim przypadku. Wywołanie Java z rzeczywistej ścieżki instalacji wydaje się działać zgodnie z oczekiwaniami.

Ten problem został rozwiązany w kompilacji 16193

Abhiram
źródło
0

Jeśli chcesz uruchomić plik java.exe w podsystemie Linux, postępuj zgodnie z tą odpowiedzią: https://stackoverflow.com/a/54151117/2751561

Jeśli chcesz inaczej, możesz wywołać bin Java na cmd w następujący sposób:

wsl java -version
ViniciusCR
źródło