【问题标题】:Include libs folder containing .jars for compilation包含包含 .jars 的 libs 文件夹以进行编译
【发布时间】:2013-04-05 17:35:35
【问题描述】:

我的文件结构如下:

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>

【问题讨论】:

  • 尝试给出所有 jars 所在的绝对路径,而不是 libs/*.jar 。它是 libs 还是 lib?
  • 是的,我给出了相对路径,认为它会起作用。我尝试给出完整的路径,但没有运气......
  • 你能告诉我lib文件夹在哪里以及build.xml在哪里吗?
  • ServerCode -> bin,libs,src, build.xml

标签: java ant compilation classpath javac


【解决方案1】:

定义类路径以包含所有像这样的jar

<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>  

【讨论】:

    【解决方案2】:

    我认为您不能在类路径属性中使用模式。我可能错了。您应该以详细模式(-v 选项)运行 ant 以查看它如何使用您的类路径属性。我怀疑它是将它作为文字字符串传递给 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 生成的,所以有点冗长,但你明白了。

    【讨论】:

      【解决方案3】:

      尝试http://ant.apache.org/manual/using.html 中提到的这个,而不是在 javac 中提供 classPath 属性

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

      您还可以通过上述链接浏览其他方式

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多