java - Ant 找不到主类错误

标签 java ant build noclassdeffounderror build-script

这是我第一次使用 Ant,当它尝试运行时,我遇到了 java.lang.NoClassDefFoundError 异常。这是我的 Ant 构建脚本,

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

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

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

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

    <property name="main-class" value="gsingh.learnkirtan.Main" />

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

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

    <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="run" depends="jar">
        <java classname="${main-class}" fork="true" />
        <classpath>
            <path refid="classpath" />
            <path location="${jar.dir}/${ant.project.name}.jar" />
        </classpath>
    </target>

    <target name="clean-build" depends="clean,jar" />

    <target name="main" depends="clean,run" />

</project>

构建没有错误。运行目标给出了异常。我检查了 jar 文件中生成的 list ,它看起来像这样,

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.2
Created-By: 1.6.0_30-b12 (Sun Microsystems Inc.)
Main-Class: gsingh.learnkirtan.Main

最佳答案

你的运行目标看起来有点奇怪,<java classname="${main-class}" fork="true" />是自动关闭的,所以 classpath元素从未被使用过

<target name="run" depends="jar">
    <java classname="${main-class}" fork="true" >
        <classpath>
            <path refid="classpath" />
            <path location="${jar.dir}/${ant.project.name}.jar" />
        </classpath>
    </java>
</target>

可能适合你。

关于java - Ant 找不到主类错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10390488/

相关文章:

java - Swing:旋转风格化文本?

java - Osgi 中的 NoClassDefFoundError w/Felix, Ant

gradle - gradle-system.out.println调试

java - Play2Torial + Play 2.0.3 + Heroku + Postgresql -- 无法构建推送

java - 基于不同服务构建请求的最佳方式/模式

java - 在 Windows 上从 weka 包管理器安装 libsvm 后,无法在 weka 3.7.10 中使用 libsvm

java - 如何使用 Java 将文本数据加载到表中

ant - 使用 Ant 解压 tgz 文件

java - 在 Nutch 中为自定义插件添加属性文件

c# - 如何使用 Cake 安装 Bower 软件包 (http ://cakebuild.net)