我在Windows 2012服务器上使用PowerShell,并删除了System32中的所有Java命令,重新安装了jdk,将JAVA_HOME和Path设置为指向新安装。 而我仍然得到以下错误:
java:术语“java”不被识别为cmdlet,函数,脚本文件或可操作程序的名称。 检查名称的拼写,或者如果包含path,请validationpath是否正确,然后重试。 在行:1 char:1 + java + ~~~~ + CategoryInfo:ObjectNotFound:(java:String)[],CommandNotFoundException + FullyQualifiedErrorId:CommandNotFoundException
我感谢任何帮助。
我从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
应该正常工作。 把它添加到你的$PROFILE
如果你希望它可以在所有未来的Powershell会话中使用。
我怀疑你是设置路径为不包含java可执行文件,因为它在bin /子目录中的JDK / JRE文件夹…
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)