首页 文章

PowerShell上无法识别Java

提问于
浏览
1

我在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 回答

  • 0

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

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

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

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

  • 0

    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)
    

相关问题