Comment utiliser l'installation Windows de Java à partir de BashOnWindows10?

10

Je ne peux pas 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 JDK / JRE dans WSL. Alors que j'exécute la mise à jour du Créateur, je m'attendais à ce que le logiciel puisse appeler n'importe quelle application Windows. Des idées pourquoi cela se produit? Je suis cependant capable de lancer avec succès l'installation Windows de Python.

frapper

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
la source
Ce n'est pas lié à Java, c'est un problème avec tous les binaires Windows. Voir ce bogue pour la discussion et quelques solutions: github.com/Microsoft/BashOnWindows/issues/333
eckes

Réponses:

8

Voici comment j'ai fait en sorte que Java "fonctionne simplement" 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 /bindossier vers votre binaire Windows Java. Chaque fois que WSL essaie d'invoquer Java maintenant, il est redirigé vers la version Windows. Vous devrez probablement ajuster le chemin à mesure que les versions Java changeront à l'avenir.

détour
la source
Superbe ! Avant: Java Command 'Java' not found- version donne Après: Java - version donne java version "1.8.0_151"Je souhaite que je pourrais monter cette réponse comme 10 points au lieu de 1!
boardtc
1
Juste un avertissement que cela "confondra" et les chemins utilisés dans votre programme Java ou en tant que propriétés / entrées. Par exemple, "/tmp/somefile.txt" sera par exemple "c: /tmp/somefile.txt" lorsque votre Java Windows essaiera de l'exécuter et entraînera un fichier introuvable!
Anders
2

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.exeest en fait un raccourci vers le répertoire d'installation réel qui est C:\Program Files\Java\jre1.8.0_31\bindans 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 la version 16193

Abhiram
la source
0

Si vous souhaitez exécuter votre java.exe à l'intérieur du 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 java bin sur cmd comme ceci:

wsl java -version
ViniciusCR
la source