2012-07-23 58 views
0

我想運行一個自定義java任務使用ant與自定義任務已成功編譯到.class文件。這個自定義任務將調用應用程序中的另一個類,理論上通過命令行運行該程序。使用螞蟻運行自定義java任務找不到類文件

<?xml version="1.0"?> 
    <project default="main" name="myproject"> 
    <property name="distDir" location=".\dist\" /> 
<property name="mainDir" location=".\" /> 
<property name="host" value=""/> 
<property name="port" value=""/> 
<property name="dir" value=""/> 
<property name="startTest" value=""/> 
<property name="endTest" value=""/> 
<property name="testOnly" value=""/> 
<property name="userName" value=""/> 
<property name="passwd" value=""/> 
    <taskdef name="mytask" classname="Classrunner"> 
     <classpath> 
      <fileset dir="${distDir}> 
       <includes="*.jar"> 
      </fileset> 
     </classpath> 
    </taskdef> 
    <target name="main"> 
     <mytask host="${host}" port="${port}" dir="${dir}" startTest="${startTest}" endTest="${endTest}" testOnly="${testOnly}" userName="${userName}" passwd="${passwd}"/> 
    </target> 
</project> 

我的螞蟻文件的一部分的taskdef指定包含一個目錄,在它所有的罐子來運行應用程序,我想運行一個文件集。我遇到的問題是無論何時通過命令行調用ant並傳遞所有正確的參數,然後出現錯誤提示「java.lang.NoClassDefFoundError:com/pega/fuzz/player/CustomClass」

CustomClass是我在我的自定義文件中調用的類,它存在於所有jar文件的目錄中,所以我不知道如何指定它的位置,因爲Ant找不到它。

回答

0

有人在工作幫助我找出一種方法來解決這個問題。

最好的辦法是,如果你設置環境變量,類路徑,通過一個.bat文件,像這樣:

set "CURRENT_DIR=%~dp0" 
cd %CURRENT_DIR% 
set "CLASSPATH=%CURRENT_DIR%\dist\bsf-2.3.0.jar;%CURRENT_DIR%\.... " 

從那裏,你可以再設置爲螞蟻的變量,從這裏向右運行Ant文件。

0

我認爲你需要taskdef標籤的類路徑屬性。
看到文檔在這裏:http://ant.apache.org/manual/tutorial-writing-tasks.html#use1

+0

問題是找不到我寫的自定義任務,它找到了我的自定義任務引用的類。 – barndog 2012-07-24 14:16:04

+0

我明白你的意思了。你確定它在一個jar文件裏面嗎?它是否在正確的包裝中? – davidfrancis 2012-07-24 15:10:03

+0

$ {distDir}指向的目錄擁有所有需要的jar文件。然後我用WinZip手動進入,看一看,它就在那裏。似乎有幾個人有這個問題,但沒有真正的解決方案。 – barndog 2012-07-24 15:14:14