java ant 运行 命令 - 找不到 lib jar

java ant run command - can not find lib jars

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

据我所知,在 lib 文件夹下找不到名为 Jackson 的库 jar...我的链接一定是错误的。有什么建议吗?

谢谢!

更新:根据@AR.3 的建议更新了 build.xml 文件,问题仍然存在

使所有属性中的所有路径成为绝对路径(通过在 src.dirbuild.dirlib.dir 前加上 ${basedir}/ 前缀)。因此您不必依赖工作目录。 <java> task you 运行 in run target 可能使用 ${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"/>