web-dev-qa-db-ja.com

JavaのBashOnWindows10からのWindowsインストールを使用する方法?

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)
10
Abhiram

この問題は、WSLがCreatorのアップデートでWindowsショートカットをサポートしていないためです。 /mnt/c/ProgramData/Oracle/Java/javapath/Java.exeは実際には実際のインストールディレクトリへのショートカットです。私の場合はC:\Program Files\Java\jre1.8.0_31\binです。実際のインストールパスからJavaを呼び出すと、期待どおりに動作するようです。

この問題は build 1619 で解決されています。

2
Abhiram

これが、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のバージョンが将来変更される場合は、おそらくパスを調整する必要があります。

8
detuur

Linuxサブシステム内でJava.exeを実行する場合は、この回答に従うことができます: https://stackoverflow.com/a/54151117/2751561

ワットを逆にしたい場合は、Java bin on cmdを次のように呼び出すことができます:

wsl Java -version
0
ViniciusCR