2013-04-05 161 views
0

libs文件夾我有以下文件結構:包括包含.jar文件編譯

ServerCode <- src , libs, bin 

我試圖編譯SRC的所有代碼。 Src在頂層和子目錄中有幾個.java文件。 libs包含構建我的項目所需的所有.jar文件。

我寫了下面的build.xml,但是當我嘗試編譯它時,編譯器拋出的錯誤無法找到我包含的庫的符號錯誤。

<project default="compile"> 
    <target name="compile"> 
     <mkdir dir="bin"/> 
     <javac srcdir="src" destdir="bin" classpath="libs/*.jar"> 
    </target> 
</project> 
+0

試試給予絕對路徑,而不是libs/*。jar。也是libs或lib? – 2013-04-05 17:38:15

+0

是的,我給了相對路徑,認爲它會起作用。我試圖給出完整的路徑,但沒有運氣...... – TomSelleck 2013-04-05 17:41:30

+0

你能告訴我lib文件夾存在的位置和build.xml存在的位置嗎? – 2013-04-05 17:42:54

回答

1

定義的類路徑包括這樣

<target name="compile" depends="" description="compile the java source files"> 
    <javac srcdir="." destdir="${build}"> 
     <classpath> 
      <fileset dir="${lib}"> 
       <include name="**/*.jar" /> 
      </fileset> 
      <fileset dir="${test_lib}"> 
       <include name="**/*.jar" /> 
      </fileset> 
     </classpath> 
    </javac> 

0

我不認爲你可以在類路徑屬性中使用模式。我可能是錯的。您應該在詳細模式下運行ant(-v選項)以查看它如何使用您的classpath屬性。我懷疑它將它作爲字符串傳遞給javac。

這是我做的:

<javac target="${javac.target}" source="${javac.source}" destdir="${validator.output.dir}" debug="on" 
     nowarn="off" 
     memorymaximumsize="128m" fork="true"> 
    <classpath refid="validator.module.production.classpath"/> 
    <src> 
     <dirset dir="Validator"> 
      <include name="src"/> 
     </dirset> 
    </src> 
</javac> 

...

<path id="validator.module.production.classpath"> 
    <fileset dir="Validator/lib/-validator" includes="**/*.jar"/> 
</path> 

有些這段代碼是由我的IDE生成所以這是一個有點冗長,但你的想法。

0

所有罐子截至http://ant.apache.org/manual/using.html提到的,而不是給classpath屬性非常久遠的javac

<classpath> 
     <pathelement location="libs/*.jar"/> 
    </classpath> 

還有其他的方法也試試這裏面你可以瀏覽上面提到的鏈接