我试图建立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_HOME
和Path
似乎都以正确的方式设置。 (请注意,%JAVA_HOME%\bin
实际上它是C:\Program Files\Java\jdk1.8.0_161\bin
而不是Path
。)
答案 0 :(得分:4)
我认为你混淆了JAVA_HOME,PATH和CLASSPATH
应将JAVA_HOME变量设置为单个目录的名称。不是多个带分隔符的目录。 JAVA_HOME目录是JDK或JRE安装的顶级目录。不是“bin”目录。
PATH和CLASSPATH变量由路径列表组成。对于PATH,路径是目录的路径名。对于CLASSPATH,路径是目录或JAR / ZIP文件(或特定种类的通配符)的路径名。
如果您使用的命令名称是简单名称,则PATH是shell搜索命令的位置;例如java
或javac
。
`
您的错误消息说明了这一点:
您的JAVA_HOME无效:
C:\Program Files\Java\jdk1.8.0_161;C:\Program Files\Java\jdk1.8.0_161\bin
这有两个原因:
您可能遇到的另一件事是环境变量的更改不一定会传播。例如,如果启动shell然后通过Windows GUI更改环境变量,则更改可能不会传播到shell。您可能需要退出shell并重新启动它以获取新值。
如果您不确定,可以运行(例如)echo %PATH%
以查看当前shell或脚本中PATH
的当前值。
<强>更新强>
根据http://cordova.apache.org/docs/en/7.x/guide/platforms/android/index.html,您需要:
ANDROID_HOME
环境变量设置为Android SDK安装位置。 还建议您将Android SDK的工具,工具/ bin和平台工具目录添加到PATH
。
答案 1 :(得分:0)
从C:\ Windows \ System32(如果有)中删除 java.dll 。
我不确定,但它可能正常工作。