2012-07-18 38 views
1

因此,我編寫了一個ant build.xml文件,其中我從兩個Java程序獲取類文件,一個擴展另一個,將它們打包成兩個單獨的jar文件,然後,啓動它們。從Ant構建文件運行Java程序

<java classname="Main"> 
      <classpath> 
        <pathelement location="${mainDir}"/> 
        <pathelement path="${Main-Class}"/> 
      </classpath> 
     </java> 

每當我調用ant時,就會說「Main」找不到。如果需要,我可以發佈build.xml文件的其餘部分,但這只是我感到困惑的部分。我很確定我的類名正確,但我最大的問題是弄清位置和路徑。現在我只有虛擬變量。

編輯:這是整個文件。

<?xml version="1.0"?> 
<project default="dist" name="webscarab"> 
<description>Class</description> 
<property name="ClassFiles" location="..\Simple\trunk\dev\Class\bin\" /> 
<property name="mainClassFiles" location="..\Simple\trunk\dev\main\build\" /> 
<property name="buildDir" location=".\build" /> 
<property name="distDir" location=".\dist" /> 
<property name="mainDir" location="..\Simple\trunk\dev\webscarab\src\" /> 
<target name="init"> 
     <tstamp/> 
     <mkdir dir="${buildDir}"/> 
     <mkdir dir="${distDir}"/> 
</target> 
<target name="dist" depends="init"> 
    <jar destfile="${distDir}/package${DSTAMP}.jar" basedir="${ ClassFiles}"/> 
    <jar destfile="${distDir}/package-web-${DSTAMP}.jar" basedir="${mainClassFiles}"/> 
    <java classname="Main"> 
    <classpath> 
     <pathelement location="${mainDir}"/> 
     <pathelement path="${Main-Class}"/> 
    </classpath> 
    </java> 
</target> 
</project> 

編輯2:我要提的每件事都已經編譯和我所有的.class文件。這不是我需要在Ant文件中做的事情。

回答

1

有關「無法找到類」的錯誤消息可能是由於類路徑不正確。

類路徑應授予您應用程序所需的所有類和資源文件的訪問權限。它由一組目錄和jar文件組成。 location將表示單個目錄或路徑,而path將表示多個,由;:分隔,具體取決於您的平臺。

你的情況,在我看來,你想你的classpath要麼包括${pegaFuzzClassFiles}${webScarabClassFiles}作爲目錄,或${distDir}/package-pega-${DSTAMP}.jar${distDir}/package-web-${DSTAMP}.jar爲jar文件。你可以使用單個<pathelement path="…"/>元素來做到這一點,但我建議多個<pathelement location="…"/>,因爲我認爲這個更清晰。

您還應該確保應用程序使用的任何第三方庫在該路徑上也可用。您可以將一個或多個<fileset>嵌套到<classpath>中,它們中的每一個都描述給定目錄中的所有jar文件。

+0

這正是我所尋找的。非常感謝! – barndog 2012-07-18 16:57:43

1

您可能需要將元素更改爲指向正在創建的Jars,現在類路徑將顯示爲指向源,由於類路徑需要編譯的.class文件或包含它們的罐子。

作爲一種風格,我也會將任務轉移到一個獨立的「運行」或「運行應用程序」目標,這取決於dist目標。

+0

是的,我會分開他們,我只是想讓這個工作第一。所以在位置下,我會把目錄放在jar文件所在的位置,然後我會放在什麼路徑下?還是我還混淆了。 – barndog 2012-07-18 15:38:12

+0

應該這樣做。 – Robert 2012-07-18 16:10:07

0

您需要Javac任務來編譯您的代碼,然後您可以運行您的編譯類。有關javac任務訪問http://ant.apache.org/manual/Tasks/javac.html

更多信息,第二個建議是: 的使用UNIX的斜槓「/」強烈建議,無論你是在 窗口或沒有。更改您的mainDir,distDir和buildDir屬性位置。

0

我沒有大量的螞蟻經驗,但您可能需要明確告訴java要運行的jar文件。

<java jar="path-to-jar-file" classname="org.owasp.webscarab.Main">