这里有许多线程关于"没有主要的清单属性"错误,但没有任何帮助。
首先,我正在使用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文件分别运行命令。
答案 0 :(得分:1)
build.xml中的清单条目应如下所示:
<manifest>
<attribute name="Main-Class" value="${main-class}"/>
</manifest>
正确的属性名称很重要。