java ant run命令 - 找不到lib jars

时间:2016-12-02 14:23:56

标签: java ant configuration compilation

我的ant构建文件如下所示:

<project name="Algorithm" basedir="." default="main">

<property name="src.dir"     value="src"/>

<property name="build.dir"   value="build"/>
<property name="classes.dir" value="${build.dir}/classes"/>

<property name="main-class"  value="ye.tian.Main"/>

<property name="jar.dir"     value="${build.dir}/jar"/>

<property name="lib.dir"     value="lib"/>

<path id="myclasspath">
    <fileset dir="${lib.dir}" includes="*.jar"/>
</path>

<target name="jar" depends="compile">
    <mkdir dir="${jar.dir}"/>
    <jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${classes.dir}">
        <manifest>
            <attribute name="Main-Class" value="${main-class}"/>
        </manifest>
    </jar>
</target>

<target name="clean">
    <delete dir="${build.dir}"/>
</target>

<target name="compile">
    <mkdir dir="${classes.dir}"/>
    <javac srcdir="${src.dir}" destdir="${classes.dir}" classpathref="myclasspath"/>
</target>

<target name="run" depends="jar">
    <java jar="${jar.dir}/${ant.project.name}.jar" classpathref="myclasspath" fork="true"/>
</target>

我的项目结构是:根文件夹,里面有两个名为src和lib的文件夹。 Lib包含所有jar库和src - 包含java文件的包。

运行ant run会出错:

run:
 [java] Exception in thread "main" java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/type/TypeReference

My libs folder looks like this:

我明白找不到名为Jackson的库罐,这些库是在lib文件夹下...我的链接一定是错的。有什么建议吗?

感谢!

更新:更新了build.xml文件,其中@ AR.3的建议仍然是同一个问题

1 个答案:

答案 0 :(得分:0)

将所有属性中的所有路径设为绝对路径(将src.dirbuild.dirlib.dir加上${basedir}/前缀。因此,您不必依赖工作目录。您在<java>目标中运行的run任务可能会使用${jar.dir}作为工作目录,而您的类路径(将其解析为相对路径)将指向不存在的build/jar/lib/*.jar

<property name="src.dir"     value="${basedir}/src"/>
<property name="build.dir"   value="${basedir}/build"/>
<property name="lib.dir"     value="${basedir}/lib"/>

<property name="classes.dir" value="${build.dir}/classes"/>
<property name="main-class"  value="ye.tian.Main"/>
<property name="jar.dir"     value="${build.dir}/jar"/>