如何从 BashOnWindows10 使用 windows 安装的 java?

Abh*_*ram 13 java bash windows-subsystem-for-linux windows-10-v1703

我无法从 BashOnWindows10 运行 Windows 版本的 java.exe。它存在于 PATH 中,但调用失败了。我的目标是避免在 WSL 中再次安装 JDK/JRE。当我运行 Creator 的更新时,我期待能够调用任何 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.
>>>
Run Code Online (Sandbox Code Playgroud)

命令行工具

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)
Run Code Online (Sandbox Code Playgroud)

小智 11

下面是我如何让 Java 为我的 WSL 安装“正常工作”。

ln -s /mnt/c/Program\ Files\ \(x86\)/Java/jre1.8.0_151/bin/java.exe /bin/java
Run Code Online (Sandbox Code Playgroud)

这样做是在您的/bin文件夹中创建一个指向Windows Java 二进制文件的符号链接。每当 WSL 现在尝试调用 Java 时,它都会被重定向到 Windows 版本。您可能需要随着 Java 版本未来的变化而调整路径。

  • 请注意,这会“混淆”Java 程序中使用的路径或作为属性/输入的路径。例如,当您的 Windows Java 尝试执行它并导致找不到文件时,“/tmp/somefile.txt”将是“c:/tmp/somefile.txt”! (2认同)

Abh*_*ram 3

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

此问题已在版本 16193中解决