2016-12-20 18 views
1

ANT経由で単純なJARファイルを呼び出そうとします。ANTエラーCreateProcessエラー= 2

C:\temp\My\My_Ant.xml:20: Execute failed: java.io.IOException: Cannot run program "C:\PROGRA~1\Java\jre7\bin\java.exe -jar C:\temp\My\javatest.jar" (in directory "C:\temp\My"): CreateProcess error=2, The system cannot find the file specified 
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1047) 
    at java.lang.Runtime.exec(Runtime.java:617) 
    at org.apache.tools.ant.taskdefs.launcher.Java13CommandLauncher.exec(Java13CommandLauncher.java:58) 
    at org.apache.tools.ant.taskdefs.Execute.launch(Execute.java:426) 
    at org.apache.tools.ant.taskdefs.Execute.execute(Execute.java:440) 
    at org.apache.tools.ant.taskdefs.ExecTask.runExecute(ExecTask.java:629) 
    at org.apache.tools.ant.taskdefs.ExecTask.runExec(ExecTask.java:670) 
    at org.apache.tools.ant.taskdefs.ExecTask.execute(ExecTask.java:496) 
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:293) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) 
    at org.apache.tools.ant.Task.perform(Task.java:348) 
    at org.apache.tools.ant.Target.execute(Target.java:435) 
    at org.apache.tools.ant.Target.performTasks(Target.java:456) 
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1405) 
    at org.apache.tools.ant.Project.executeTarget(Project.java:1376) 
    at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41) 
    at org.apache.tools.ant.Project.executeTargets(Project.java:1260) 
    at org.apache.tools.ant.Main.runBuild(Main.java:854) 
    at org.apache.tools.ant.Main.startAnt(Main.java:236) 
    at org.apache.tools.ant.launch.Launcher.run(Launcher.java:285) 
    at org.apache.tools.ant.launch.Launcher.main(Launcher.java:112) 

によって引き起こさ::にjava.io.IOException:私は実行するたびに、私は次のエラーを取得のCreateProcessをエラー= 2、ファイルがjava.lang.ProcessImpl.createで を指定見つけることができないシステム(ネイティブメソッド) (java.lang.ProcessImpl)(ProcessImpl.java:385) (java.lang.ProcessImpl.start)(ProcessImpl.java:136) (java.lang.ProcessBuilder.start)(ProcessBuilder.java:1028) .. 。24 more

Javaプログラムは単純に「hello world!」と表示しています。

私は次のようにANTを呼び出す:

C:\Tools\ANT\apache-ant-1.9.7\bin\ant -buildfile My_Ant.xml

私はこれを取得していますなぜ任意のアイデア?コマンドラインでこれを実行すると、正しいメッセージが表示されます。

C:\temp\My>C:\PROGRA~1\Java\jre7\bin\java.exe -jar JavaTest.jar 
hello from Java 

編集:

のAntスクリプト:

<?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> 
+0

エラーに関連するビルドファイルスニペットを追加できますか? –

+0

@martinclayton追加されました。実際に意味をなす – KK99

答えて

1

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" 
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
+0

あなたの時間に感謝します。ありがとう。しかし、あなたが提案したとおりに変更した後、次のような '[exec]エラー:Java仮想マシンを作成できませんでした。 [exec]エラー:致命的な例外が発生しました。プログラムは終了します。 [exec]認識できないオプション:-jar C:¥temp¥My¥javatest.jar' – KK99

+0

"-jar"と "$ {AnalyzerPath} \ $ {Analyzer}"を別々のargsにさらに分離する必要があるようです。 –

+0

ありがとう!できます :) – KK99

関連する問題