2012-05-21 77 views
1

我無法讓我的Ant腳本(BlackBerry版本)運行preverify.exe命令&將正確的參數傳遞給它。無法運行使用Ant的「preverify.exe」<exec>任務


在命令提示符(Windows 7),該工程100% - 參數爲正確分配了工作:

preverify -verbose -classpath C:\development\tools\bb-jde\jde5.0\components\lib\net_rim_api.jar -d build\classes\preverified build\classes\preverified build\classes\unverified 

我試着用以下的目標將此放入我的Ant腳本 - 嘗試使用相同的參數:

<target name="preverify"> 
    <mkdir dir="${dest.dir}/classes/preverified" /> 
    <exec executable="${jde.home}/bin/preverify"> 
     <arg value="-verbose" /> 
     <arg value="-classpath C:\development\tools\bb-jde\jde5.0\components\lib\net_rim_api.jar" /> 
     <arg value="-d build\classes\preverified" /> 
     <arg value="build\classes\unverified" /> 
    </exec> 
</target> 

這是行不通的。我得到以下錯誤:

Illegal option 
-classpath C:\development\tools\bb-jde\jde5.0\components\lib\net_rim_api.jar 
  • 此類路徑是通過命令行完全可以接受的(通常的java命令接受JAR文件的目錄,因爲它們基本上都是ZIP文件)。

我怎樣才能螞蟻正確的參數發送到該命令,在命令行版本?必須有一些關於exec,我錯過了?


下面是詳細模式運行這個目標的Ant輸出完整的,如果它可以幫助:

Apache Ant(TM) version 1.8.2 compiled on December 20 2010 
Trying the default build file: build.xml 
Buildfile: C:\development\ant\test_using_javac_jar_preverify_then_rapc\Cobi\build.xml 
Detected Java version: 1.6 in: C:\Java\jdk1.6.0_24\jre 
Detected OS: Windows 7 
parsing buildfile C:\development\ant\test_using_javac_jar_preverify_then_rapc\Cobi\build.xml with URI = file:/C:/development/ant/test_using_javac_jar_preverify_then_rapc/Cobi/build.xml 
Project base dir set to: C:\development\ant\test_using_javac_jar_preverify_then_rapc\Cobi 
parsing buildfile jar:file:/C:/development/tools/apache-ant/lib/ant.jar!/org/apache/tools/ant/antlib.xml with URI = jar:file:/C:/development/tools/apache-ant/lib/ant.jar!/org/apache/tools/ant/antlib.xml from a zip file 
Importing file C:\development\ant\common\constants.xml from C:\development\ant\test_using_javac_jar_preverify_then_rapc\Cobi\build.xml 
Overriding previous definition of reference to ant.projectHelper 
parsing buildfile C:\development\ant\common\constants.xml with URI = file:/C:/development/ant/common/constants.xml 
parsing buildfile jar:file:/C:/development/tools/bb-ant-tools/bb-ant-tools.jar!/bb-ant-defs.xml with URI = jar:file:/C:/development/tools/bb-ant-tools/bb-ant-tools.jar!/bb-ant-defs.xml from a zip file 
Overriding previous definition of reference to ant.projectHelper 
[property] Loading C:\development\ant\test_using_javac_jar_preverify_then_rapc\Cobi\project.properties 
[property] Loading C:\development\ant\common\jde5.0.properties 
[property] Loading C:\development\ant\common\common.properties 
[pathconvert] Set property net_rim_api.jar.dos = C:\development\tools\bb-jde\jde5.0\components\lib\net_rim_api.jar 
Build sequence for target(s) `preverify' is [preverify] 
Complete build sequence is [preverify, javac, build, sign, clean, ] 

preverify: 
    [mkdir] Skipping C:\development\ant\test_using_javac_jar_preverify_then_rapc\Cobi\build\classes\preverified because it already exists. 
    [exec] Current OS is Windows 7 
    [exec] Executing 'C:\development\tools\bb-jde\jde5.0\components\bin\preverify' with arguments: 
    [exec] '-verbose' 
    [exec] '-classpath C:\development\tools\bb-jde\jde5.0\components\lib\net_rim_api.jar' 
    [exec] '-d build\classes\preverified' 
    [exec] 'build\classes\unverified' 
    [exec] 
    [exec] The ' characters around the executable and arguments are 
    [exec] not part of the command. 
    [exec] preverify: Illegal option -classpath C:\development\tools\bb-jde\jde5.0\components\lib\net_rim_api.jar 
    [exec] 
    [exec] Usage: preverify [options] classnames|dirnames ... 
    [exec] 
    [exec] where options include: 
    [exec] -classpath  <directories separated by ';'> 
    [exec]     Directories in which to look for classes 
    [exec] -d <directory> Directory in which output is written (default is ./output/) 
    [exec] -cldc1.0  Checks for existence of language features prohibited 
    [exec]     by CLDC 1.0 (native methods, floating point and finalizers) 
    [exec] -nofinalize No finalizers allowed 
    [exec] -nonative  No native methods allowed 
    [exec] -nofp   No floating point operations allowed 
    [exec] @<filename> Read command line arguments from a text file 
    [exec]     Command line arguments must all be on a single line 
    [exec]     Directory names must be enclosed in double quotes (") 
    [exec] 
    [exec] Result: 1 

BUILD SUCCESSFUL 
Total time: 1 second 

回答

0

您傳遞參數的方式不正確。 空間之間的-classpath標記,並且不允許JAR名稱。

您必須將該行(以及其下面的-d)分成兩行。這個工程:

<exec executable="${jde.home}/bin/preverify"> 
     <arg value="-verbose" /> 
     <!-- classpath to the RIM api --> 
     <arg value="-classpath" /> 
     <arg value="C:\development\tools\bb-jde\jde5.0\components\lib\net_rim_api.jar" /> 
     <!-- destination folder --> 
     <arg value="-d" /> 
     <arg value="build\classes\preverified" /> 
     <!-- source folder --> 
     <arg value="build\classes\unverified" /> 
    </exec> 
1

這看起來並不像螞蟻一樣的問題。正在由預校驗命令返回的錯誤消息,證明了ANT正在執行它...

我不明白這是什麼命令是應該做的,但是用法消息給出一個提示,在根本原因:

[exec] Usage: preverify [options] classnames|dirnames ... 
[exec] 
[exec] where options include: 
[exec] -classpath  <directories separated by ';'> 
[exec]     Directories in which to look for classes 

您還沒有將目錄列表指定爲「classpath」參數....您提供了一個jar文件。該命令是否能夠支持jar文件?

+0

thx這是一個包含空格的參數的問題。將參數分成多行解決了問題。 –

0

我通過在環境變量PATH中包含jdk \ bin目錄路徑解決了這個問題。