BashOnWindows10からWindowsバージョンのJava.exeを実行できません。それはPATHに存在しますが、呼び出しは静かに失敗します。私の目標は、WSLにJDK/JREを再度インストールする必要がないようにすることです。私はクリエーターのアップデートを実行しているので、Windowsアプリケーションを呼び出すことができると期待していました。なぜこれが起こっているのですか?ただし、Pythonの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)
この問題は、WSLがCreatorのアップデートでWindowsショートカットをサポートしていないためです。 /mnt/c/ProgramData/Oracle/Java/javapath/Java.exe
は実際には実際のインストールディレクトリへのショートカットです。私の場合はC:\Program Files\Java\jre1.8.0_31\bin
です。実際のインストールパスからJavaを呼び出すと、期待どおりに動作するようです。
この問題は build 1619 で解決されています。
これが、WSLインストールでJavaを「機能させる」方法です。
ln -s /mnt/c/Program\ Files\ \(x86\)/Java/jre1.8.0_151/bin/Java.exe /bin/Java
これにより、/bin
フォルダにWindows Javaバイナリへのシンボリックリンクが作成されます。 WSLがJavaを呼び出そうとするたびに、Windowsバージョンにリダイレクトされます。 Javaのバージョンが将来変更される場合は、おそらくパスを調整する必要があります。
Linuxサブシステム内でJava.exeを実行する場合は、この回答に従うことができます: https://stackoverflow.com/a/54151117/2751561
ワットを逆にしたい場合は、Java bin on cmdを次のように呼び出すことができます:
wsl Java -version