没有使用ant运行.jar文件的主要清单属性?

时间:2016-05-22 18:57:11

标签: java ant

这里有许多线程关于"没有主要的清单属性"错误,但没有任何帮助。

首先,我正在使用ssh进行此操作,所以我不使用eclipse。这是我正在运行的build.xml文件:

<project name="MergeSortTester" 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="jar.dir"        value="${build.dir}/jar"/>
    <property name="main-class"     value="com.doublell.MergeSortTester"/>


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

    <target name="compile">
            <mkdir dir="${classes.dir}"/>
            <javac srcdir="${src.dir}" destdir="${classes.dir}"/>
    </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 jar="${jar.dir}/${ant.project.name}.jar" fork="true"/>
    </target>

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

在我的src目录中的每个.java文件的开头,我都有:

package com.doublell;

当我进入&#34; ant&#34;命令进入bash我得到:

Buildfile: /home/students/khaines/GitHubRepos/DoubleLinkedList/build.xml

clean:
   [delete] Deleting directory /home/students/khaines/GitHubRepos/DoubleLinkedList/build

compile:
    [mkdir] Created dir: /home/students/khaines/GitHubRepos/DoubleLinkedList/build/classes
    [javac] /home/students/khaines/GitHubRepos/DoubleLinkedList/build.xml:15: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
    [javac] Compiling 11 source files to /home/students/khaines/GitHubRepos/DoubleLinkedList/build/classes
    [javac] Note: /home/students/khaines/GitHubRepos/DoubleLinkedList/src/MergeSortTester.java uses unchecked or unsafe operations.
    [javac] Note: Recompile with -Xlint:unchecked for details.

jar:
    [mkdir] Created dir: /home/students/khaines/GitHubRepos/DoubleLinkedList/build/jar
      [jar] Building jar: /home/students/khaines/GitHubRepos/DoubleLinkedList/build/jar/MergeSortTester.jar

run:
     [java] no main manifest attribute, in /home/students/khaines/GitHubRepos/DoubleLinkedList/build/jar/MergeSortTester.jar
     [java] Java Result: 1

main:

BUILD SUCCESSFUL
Total time: 1 second

我怀疑问题在于包名,我以前从未手动声明包名。是的,MergeSortTester.java是带有main方法的类。

此外,我主要专注于只运行一个.jar文件,但我真的很想创建两个.jar文件(通过添加另一个使用与MergeSortTester相同的其他类的驱动程序类)。 java使用)并为每个jar文件分别运行命令。

1 个答案:

答案 0 :(得分:1)

build.xml中的清单条目应如下所示:

<manifest>
    <attribute name="Main-Class" value="${main-class}"/>
</manifest>

正确的属性名称很重要。