运行 在 java 中使用 ant

Running use ant in java

编译和创建JAR文件都成功。

运行 java 通过 ant 文件的文件正在产生错误。

<project>
    <target name="clean">
        <delete dir="build"/>
    </target>

    <target name="compile">
        <mkdir dir="build/classes"/>
        <javac srcdir="src" destdir="build/classes"/>
    </target>

    <target name="jar">
        <mkdir dir="build/jar"/>
        <jar destfile="build/jar/Helloworld" basedir="build/classes">
            <manifest>
                <attribute name="Main-Class" value="Helloworld"/>
            </manifest>
        </jar>
    </target>

    <target name="run">
        <java jar="build/jar/Helloworld" fork="true"/>
    </target>
</project>

构建文件:C:\Workspace\anttest\build.xml

run:
 [java] java.lang.NoClassDefFoundError: Helloworld
 [java] Caused by: java.lang.ClassNotFoundException: Helloworld
 [java]     at java.net.URLClassLoader.run(URLClassLoader.java:202)
 [java]     at java.security.AccessController.doPrivileged(Native Method)
 [java]     at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
 [java]     at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
 [java]     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
 [java]     at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
 [java] Could not find the main class: Helloworld. Program will exit.
 [java] Exception in thread "main" 
 [java] Java Result: 1

构建成功

您的 JAR 文件将不包含 HelloWorld class。

A​​nt 默认忽略 java 进程中的 return 代码,请参阅:https://ant.apache.org/manual/Tasks/java.html#failonerror 您可以添加 failonerror="true" 属性来更改此行为,即:

尝试改变

<target name="run">
    <java jar="build/jar/Helloworld" fork="true"/>
</target>

<target name="run">
    <java jar="build/jar/Helloworld" failonerror="true" fork="true"/>
</target>