Wie verwende ich die Windows-Installation von Java aus BashOnWindows10?

10

Ich kann die Windows-Version von java.exe nicht über BashOnWindows10 ausführen. Es ist in PATH vorhanden, aber der Aufruf schlägt stillschweigend fehl. Mein Ziel ist es, zu vermeiden, dass das JDK / JRE erneut in der WSL installiert werden muss. Während ich das Creator-Update ausführe, hatte ich erwartet, dass Windows-Anwendungen aufgerufen werden können. Irgendwelche Ideen, warum das passiert? Ich kann jedoch die Windows-Installation von Python erfolgreich starten.

Bash

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
quelle
Es ist nicht mit Java verwandt, es ist ein Problem mit allen Windows-Binärdateien. Sehen Sie diesen Fehler für Diskussionen und einige
Problemumgehungen

Antworten:

8

Hier ist, wie ich Java für meine WSL-Installation "nur funktionieren" ließ.

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

Dadurch wird in Ihrem /binOrdner eine symbolische Verknüpfung zu Ihrer Windows Java-Binärdatei erstellt. Immer wenn die WSL versucht, Java aufzurufen, wird sie zur Windows-Version umgeleitet. Sie müssen den Pfad wahrscheinlich anpassen, wenn sich Java-Versionen in Zukunft ändern.

detuur
quelle
Hervorragend ! Vorher: Java-Version gibt Nachher Command 'Java' not found: Java - Version gibt java version "1.8.0_151"Ich wünschte, ich könnte diese Antwort mit 10 statt 1 Punkten verbessern !
Boardtc
1
Nur ein Hinweis darauf, dass dies die in Ihrem Java-Programm oder als Eigenschaften / Eingaben verwendeten Pfade "verwirrt". ZB "/tmp/somefile.txt" ist zB "c: /tmp/somefile.txt", wenn Ihr Windows Java versucht, es auszuführen und die Datei nicht gefunden wird!
Anders
2

Dieses Problem liegt daran, dass die WSL keine Windows-Verknüpfungen im Creator-Update unterstützt. /mnt/c/ProgramData/Oracle/Java/javapath/java.exeist eigentlich eine Verknüpfung zum eigentlichen Installationsverzeichnis, das C:\Program Files\Java\jre1.8.0_31\binin meinem Fall ist. Das Aufrufen von Java über den tatsächlichen Installationspfad scheint wie erwartet zu funktionieren.

Dieses Problem wurde in Build 16193 behoben

Abhiram
quelle
0

Wenn Sie Ihre java.exe im Linux-Subsystem ausführen möchten, können Sie dieser Antwort folgen: https://stackoverflow.com/a/54151117/2751561

Wenn Sie möchten, dass es umgekehrt ist, können Sie den Java-Bin auf cmd wie folgt aufrufen:

wsl java -version
ViniciusCR
quelle