我无法从 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.
>>>
命令执行程序
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)
答案1
以下是我如何让 Java 在 WSL 安装中“正常工作”。
ln -s /mnt/c/Program\ Files\ \(x86\)/Java/jre1.8.0_151/bin/java.exe /bin/java
这样做的目的是在您的/bin
文件夹中创建一个指向 Windows Java 二进制文件的符号链接。每当 WSL 尝试调用 Java 时,它都会重定向到 Windows 版本。随着 Java 版本将来的变化,您可能需要调整路径。
答案2
此问题是因为 WSL 不支持 Creator 更新中的 Windows 快捷方式。/mnt/c/ProgramData/Oracle/Java/javapath/java.exe
实际上是指向实际安装目录的快捷方式,C:\Program Files\Java\jre1.8.0_31\bin
在我的情况下是这样的。从实际安装路径调用 java 似乎可以按预期工作。
该问题已在内部版本 16193
答案3
如果您想在 Linux 子系统内执行 java.exe,您可以按照以下答案操作: https://stackoverflow.com/a/54151117/2751561
如果您想要反过来,您可以像这样在 cmd 上调用 java bin:
wsl java -version