PowerShell上无法识别Java

时间:2015-02-04 22:06:41

标签: java windows powershell

我在Windows 2012服务器上使用PowerShell,我从System32中删除了所有java命令,重新安装了jdk,设置了JAVA_HOME和Path以指向新安装。我仍然收到以下错误:

java:术语' java'不被识别为cmdlet,函数,脚本文件或可操作程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。 在行:1个字符:1 + java + ~~~~     + CategoryInfo:ObjectNotFound:(java:String)[],CommandNotFoundException     + FullyQualifiedErrorId:CommandNotFoundException

3 个答案:

答案 0 :(得分:2)

  

我删除了System32

中的所有java命令

这就是Windows无法找到java.exe的原因。默认的JRE安装将Java放入System32目录,这是CMD和Powershell通常会找到的目录。

您可以通过从管理shell运行以下命令来解决此问题。这将在Windows目录中创建java.exe的副本。 (你也可以通过软链接逃脱)

fsutil hardlink create (join-path $env:SystemRoot 'java.exe') (join-path $env:JAVA_HOME 'bin\java.exe')

如果您不想修改Windows目录(或者不能修改),您可以随时在Powershell会话中设置别名。

Set-Alias -Name java -Value (Join-Path $env:JAVA_HOME 'bin\java.exe')

在当前会话中运行该行,并从命令行运行java应该可以正常工作。如果您希望它可以在以后的所有Powershell会话中使用,请将其添加到$PROFILE

答案 1 :(得分:1)

  • PATH需要指向JDK / JRE安装中的bin /目录
  • JAVA_HOME需要指向JDK / JRE的顶级目录

我怀疑您将PATH设置为不包含java可执行文件的JDK / JRE文件夹,因为它位于bin /子目录中...

答案 2 :(得分:1)

1)我的默认JAVA_HOME是:

echo %JAVA_HOME%
D:\Program Files\Java\jdk1.7.0_25
<= The installer automagically configures this when you install a JRE

2)我的默认%PATH%包含任何 Java

3)我可以从Windows命令提示符运行(但不能编译)Java:

java -version
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)

4)我也可以在Powershell内部(或从.ps1 Powershell脚本)中完全相同:

PS D:\temp> java -version
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)