PowerShell上无法识别Java

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

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

回答(3)

3 years ago

我删除了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 .

3 years ago

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

  • JAVA_HOME需要指向JDK / JRE的顶级目录

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

3 years ago

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)