Windows命令提示符中找不到Java.exe

3
在Windows Server 2008上安装了Java 1.7。在Cygwin中,我可以清楚地看到"which java.exe"返回c:\Windows\System32\,即使运行"java -version"也会返回1.7。但是在Windows命令提示符和/或Powershell中,它会抱怨它不是一个已识别的内部或外部命令。
在上述路径中,我也无法在Windows资源管理器中看到该文件,即使更改了Windows资源管理器中的文件夹选项。
安装的Java版本是64位的,适用于Windows Server 2008。在Windows 7上也是相同的行为。
有人知道如何解决这个问题吗?
非常感谢您提供的任何帮助。
-RG

1
请查看:https://dev59.com/OG445IYBdhLWcg3w0ddD - Anthony Accioly
4个回答

3

我认为这是因为你的操作系统是64位的,但你安装的Java版本是32位的。32位Shell(如Cygwin的bash或我的情况下是MSYS的sh)可以看到并运行它,但64位的Shell(cmd)则不能。


他们不是说他们的Java版本是64位的吗? - Chris
OP表示它的OS是64位。但是没有什么可以阻止您(或我)安装32位Java。如果您不使用32位Java文件夹扩展CMD路径,则CMD将无法找到它。这是因为纯32位java安装会在c:\ Windows \ SYSWoW64中创建一个java.exe,32位应用程序透明地访问c:\ Windows \ System32作为...(称为文件系统重定向器1的“功能”)。 64位应用程序访问“真实”的c:\ Windows \ System32,其中不存在这样的java.exe。 - user2195045
非常正确,但OP指出:“在Windows Server 2008上安装的Java版本是64位的。在Windows 7上也是这样。” - Chris
我错过了那一点,抱歉。然而,所有的症状都表明OP在64位操作系统上安装了32位Java。 如果OP能够确定(使用Windows资源管理器)c:\Windows\SYSWoW64中是否存在java.exe,则可能有助于解决此问题。 - user2195045
是的。我在c:\windows\syswow64中看到了java.exe。有没有一个选项可以告诉我它是32位还是64位。根据用户2195045的上述解释,似乎我安装了32位,这部分是因为java/com/en/download/chrome.jsp没有给我选择二进制文件的选项。所以可能是我有32位的chrome浏览器,导致java网站将我重定向到32位下载... - Rg Glpj
你可以使用Cygwin的“file”命令,该命令(与MSYS不同...)会明确告诉你PE可执行文件是32位还是64位(MSYS告诉你它是“Mono/.Net程序集”)。你也可以启动java --version。Oracle的java.exe 64位明确指出了这一点。32位则保持缄默。 - user2195045

3

尝试使用cygwin64,或将%JAVA_HOME%\bin放在PATH环境变量的开头。因为这里有解释。


1

我使用了Java安装程序,它设置了JAVA_HOME变量,并且Java被安装在C:\Windows\System32中,这是默认可在%PATH%环境变量中使用的。我仍然不知道为什么无法从Windows命令提示符中运行Java。我放弃了这一点,转而在Cygwin窗口中启动java(或.jar程序)。这种行为只出现在Windows Server 2008中,而在Windows 7上的相同Java安装表现正常。仍然愿意听取任何人的解决方案。 - Rg Glpj
@RgGlpj 发布你的 %PATH% 变量确切内容。 - Austin

0

我知道这个问题很老了,但我需要答案,在这里没有找到,所以我会为其他人提供:

将变量值输入为Java开发工具包的安装路径。 如果您的Java安装目录中的路径名中有空格,则应在环境变量中使用缩短的路径名(例如C:\Progra~1\Java\jre6)。

图标 64位Windows系统用户注意事项

Progra~1 = 'Program Files' Progra~2 = 'Program Files(x86)'

答案来源于atlassian。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接