我为我的cordova项目创建了一个ant构建如下:
<project default="build">
<target name="init-android">
<exec executable="cordova">
<arg value="platform"/>
<arg value="add"/>
<arg value="android"/>
</exec>
<exec executable="cordova">
<arg value="build"/>
</exec>
</target>
</project>
但我收到了这个错误:
C:\ path_to_project \ build.xml:3:执行失败:java.io.IOException: 无法运行程序“cordova”:CreateProcess error = 2,系统不能 找到指定的文件 在java.lang.ProcessBuilder.start(ProcessBuilder.java:1029) 在java.lang.Runtime.exec(Runtime.java:615) 在org.apache.tools.ant.taskdefs.launcher.Java13CommandLauncher.exec(Jav) a13CommandLauncher.java:41)
我可以在命令提示符下运行cordova命令,没有问题,我有:
JAVA_HOME = C:/ Program Files / Java / jdk1.7.0_10 / ANT_HOME = C:\ Program Files \ Java \ apache-ant-1.9.2 NODEJS_HOME = C:\ Program Files \ nodejs
他们都在我的道路上。我不明白为什么它不起作用。请帮忙。感谢
答案 0 :(得分:4)
通常在使用Java应用程序在Windows中启动程序时,我经常需要执行cmd.exe
并将其传递给我实际想要运行的程序的完整路径。这允许系统环境变量等以您期望的方式设置。试试这个:
<project default="build">
<target name="init-android">
<exec executable="cmd.exe">
<arg value="/C"/>
<arg value="cordova"/>
<arg value="platform"/>
<arg value="add"/>
<arg value="android"/>
</exec>
<exec executable="cmd.exe">
<arg value="/C"/>
<arg value="cordova"/>
<arg value="build"/>
</exec>
</target>
</project>
如果仍然无效,请给出cordova的完整路径。如果您有一个已定义的环境变量,则该环境变量应该有效。