如何从BashOnWindows10使用Java的Windows安装?


10

我无法从BashOnWindows10运行Windows版本的java.exe。它存在于PATH中,但是调用会以静默方式失败。我的目标是避免必须在WSL中再次安装JDK / JRE。当我运行Creator的更新程序时,我期望能够调用任何Windows应用程序。任何想法为什么会这样?但是,我能够成功启动Windows的Python安装。

重击

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.
>>>

命令文件

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二进制文件都有此问题。请参见此
eckes

Answers:


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"我希望我可以将这个答案提高10分而不是1分!
boardtc

1
请注意,这将“混淆”您的Java程序或用作属性/输入的路径。例如,当您的Windows Java尝试执行“ /tmp/somefile.txt”并导致未找到文件时,其名称将为“ c:/tmp/somefile.txt”!
安德斯

2

此问题是因为WSL在创建者的更新中不支持Windows快捷方式。/mnt/c/ProgramData/Oracle/Java/javapath/java.exe实际上是C:\Program Files\Java\jre1.8.0_31\bin我的实际安装目录的快捷方式。从实际的安装路径调用Java似乎可以正常工作。

在内部版本16193中已解决此问题


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.