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


10

BashOnWindows10からjava.exeのWindowsバージョンを実行できません。それはPATHに存在しますが、呼び出しは静かに失敗します。私の目標は、WSLにJDK / JREを再度インストールする必要を回避することです。私はクリエーターのアップデートを実行しているので、がすべてのWindowsアプリケーションを呼び出すことができると期待していました。なぜこれが起こっているのですか?しかし、PythonのWindowsインストールを正常に起動できます。

バッシュ

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)

Javaとは関係ありません。すべてのWindowsバイナリに問題があります。議論と回避策については、このバグを参照してください:github.com/Microsoft/BashOnWindows/issues/333
eckes

回答:


8

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


素晴らしい!以前:Java-バージョンが与えるCommand 'Java' not found後:Java- バージョンが与えるjava version "1.8.0_151"この答えを1点ではなく10点まで上げられたらいいのに
boardtc 2018年

1
これが「混乱」し、Javaプログラムで、またはプロパティ/入力として使用されるパスであることに注意してください。たとえば、「/ tmp / somefile.txt」は、Windows Javaが実行しようとしてファイルが見つからない場合、「c:/tmp/somefile.txt」のようになります。
アンデルス

2

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

この問題は、ビルド16193で解決されています。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.