在Windows 8.1" javac -version"但是科尔多瓦并没有意识到这一点

时间:2018-03-26 22:11:10

标签: java android cordova phonegap-build

我试图建立Cordova。当我运行cordova build android时,收到以下错误:

(node:6816) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Failed to run "javac -version", make sure that you have a JDK installed.
You can get it from: http://www.oracle.com/technetwork/java/javase/downloads.
Your JAVA_HOME is invalid: C:\Program Files\Java\jdk1.8.0_161;C:\Program Files\Java\jdk1.8.0_161\bin

但是我可以正常运行javac -version

C:\>javac -version
javac 1.8.0_161

我试图以各种方式设置JAVA_HOME:指向根;指向bin文件夹;将其设置为User变量,也设置为System one;将%JAVA_HOME%\bin添加到Path(用户和系统)等等。

我已经检查了几篇关于这个问题的文章,并且他们说如果我能够使用javac -version,那么这应该表明我的环境变量设置正确。即使情况确实如此,Cordova似乎仍然无法识别它。

更新

按照Stephen C的指示,我已经重置了我的变量,但我的错误仍然存​​在。正如您在图片中看到的那样,我可以正常呼叫javac,并且JAVA_HOMEPath似乎都以正确的方式设置。 (请注意,%JAVA_HOME%\bin实际上它是C:\Program Files\Java\jdk1.8.0_161\bin而不是Path。)

enter image description here

2 个答案:

答案 0 :(得分:4)

我认为你混淆了JAVA_HOME,PATH和CLASSPATH

  • 应将JAVA_HOME变量设置为单个目录的名称。不是多个带分隔符的目录。 JAVA_HOME目录是JDK或JRE安装的顶级目录。不是“bin”目录。

  • PATH和CLASSPATH变量由路径列表组成。对于PATH,路径是目录的路径名。对于CLASSPATH,路径是目录或JAR / ZIP文件(或特定种类的通配符)的路径名。

  • 如果您使用的命令名称是简单名称,则PATH是shell搜索命令的位置;例如javajavac。 `

  • CLASSPATH是告诉Java工具查看已编译类以加载,编译等的方法之一。

您的错误消息说明了这一点:

  

您的JAVA_HOME无效:

C:\Program Files\Java\jdk1.8.0_161;C:\Program Files\Java\jdk1.8.0_161\bin

这有两个原因:

  1. JAVA_HOME不应该是路径
  2. C:\ Program Files \ Java \ jdk1.8.0_161 \ bin不是Java主页。 Java主目录是C:\ Program Files \ Java \ jdk1.8.0_161 ....可能。
  3. 您可能遇到的另一件事是环境变量的更改不一定会传播。例如,如果启动shell然后通过Windows GUI更改环境变量,则更改可能不会传播到shell。您可能需要退出shell并重新启动它以获取新值。

    如果您不确定,可以运行(例如)echo %PATH%以查看当前shell或脚本中PATH的当前值。

    <强>更新

    根据http://cordova.apache.org/docs/en/7.x/guide/platforms/android/index.html,您需要:

    • 安装Android Studio
    • ANDROID_HOME环境变量设置为Android SDK安装位置。

    还建议您将Android SDK的工具,工具/ bin和平台工具目录添加到PATH

答案 1 :(得分:0)

从C:\ Windows \ System32(如果有)中删除 java.dll

我不确定,但它可能正常工作。