2013-04-05 151 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> 

还有其他的方法也试试这里面你可以浏览上面提到的链接