当我尝试通过ANT调用简单的JAR文件时。每当我执行时,我都会收到以下错误:
C:\Tools\ANT\apache-ant-1.9.7\bin\ant -buildfile My_Ant.xml
引起:java.io.IOException:CreateProcess error = 2,系统找不到指定的文件 at java.lang.ProcessImpl.create(Native Method) 在java.lang.ProcessImpl。(ProcessImpl.java:385) 在java.lang.ProcessImpl.start(ProcessImpl.java:136) 在java.lang.ProcessBuilder.start(ProcessBuilder.java:1028) ......还有24个
Java程序只是打印“hello world!”
我用以下方式打电话给ANT:
C:\temp\My>C:\PROGRA~1\Java\jre7\bin\java.exe -jar JavaTest.jar
hello from Java
我知道为什么会这样吗?当我通过命令行运行时,我得到了正确的消息。
<?xml version="1.0" encoding="UTF-8"?>
<project name="Issue Management" default="startActivity" xmlns:if="ant:if" xmlns:unless="ant:unless">
<property name="javaPath" value="C:\PROGRA~1\Java\jre7\bin\java.exe"/>
<property name="AnalyzerPath" value="C:\temp\my"/>
<property name="Analyzer" value="javatest.jar"/>
<!--Setting the location of ANT Contrib starts
<taskdef resource="net/sf/antcontrib/antlib.xml">
<classpath>
<pathelement location="C:/Tools/ANT/apache-ant-1.8.2/ant-contrib-1.0b3.jar" />
</classpath>
</taskdef>-->
<tstamp>
<format property="current.time" pattern="yyyyMMdd_HHmmss" />
</tstamp>
<target name="startActivity">
<echo>Issue Management script started at ${current.time}</echo>
<exec executable="${javaPath} -jar ${AnalyzerPath}\${Analyzer}" resultproperty="BuildErrorCode" failonerror="true" dir="${AnalyzerPath}">
<arg value="--help"/>
</exec>
<echo>Issue Management script ended at ${current.time}</echo>
</target>
</project>
编辑:
Ant脚本:
date
答案 0 :(得分:2)
executable
参数需要设置为的名称或路径可执行文件;命令参数应使用嵌套的<arg>
元素单独指定,例如:
<exec executable="${javaPath}" resultproperty="BuildErrorCode"
failonerror="true" dir="${AnalyzerPath}">
<arg value="-jar" />
<arg value="${AnalyzerPath}\${Analyzer}" />
<arg value="--help" />
</exec>
当您将整个命令行指定为可执行文件时,它被视为带有嵌入空格的单个命令,因此未找到:
Cannot run program "C:\PROGRA~1\Java\jre7\bin\java.exe -jar C:\temp\My\javatest.jar"
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^