Je ne suis pas en mesure d'exécuter la version Windows de Java.exe à partir de BashOnWindows10. Il est présent dans PATH, mais l'invocation échoue silencieusement. Mon objectif est d'éviter d'avoir à réinstaller le JDK/JRE dans WSL. Lorsque j'exécutais la mise à jour du créateur, je m'attendais à ce qu'il puisse appeler n'importe quelle application Windows. Des idées pourquoi cela se produit? Je suis cependant capable de lancer l'installation de Python sous Windows.
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)
Ce problème est dû au fait que WSL ne prend pas en charge les raccourcis Windows dans la mise à jour du créateur. /mnt/c/ProgramData/Oracle/Java/javapath/Java.exe
est en fait un raccourci vers le répertoire d'installation actuel, qui est C:\Program Files\Java\jre1.8.0_31\bin
dans mon cas. L'appel de Java à partir du chemin d'installation réel semble fonctionner comme prévu.
Ce problème est résolu dans build 16193
Voici comment je viens de faire que Java "fonctionne" pour mon installation WSL.
ln -s /mnt/c/Program\ Files\ \(x86\)/Java/jre1.8.0_151/bin/Java.exe /bin/Java
Cela crée un lien symbolique dans votre dossier /bin
vers votre binaire Java Windows. Chaque fois que WSL tente d'appeler Java, il est redirigé vers la version Windows. Vous aurez probablement besoin d'ajuster le chemin à mesure que les versions de Java changent à l'avenir.
Si vous voulez exécuter votre Java.exe dans le sous-système linux, vous pouvez suivre cette réponse: https://stackoverflow.com/a/54151117/2751561
Si vous voulez l'inverse, vous pouvez appeler la corbeille Java sur cmd comme ceci:
wsl Java -version