2016-05-22 1 views
0

「メインマニフェスト属性がありません」というエラーについては、ここには多くのスレッドがありますが、実際には何の助けもありませんでした。antを使用して.jarファイルを実行する主なマニフェスト属性はありませんか?

私はこれを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; 

私は「アリ」コマンドを入力すると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メソッドを持つクラスです。

また、私は主に1つの.jarファイルを実行することに重点を置いていましたが、実際には2つの.jarファイルを作成できるようにしています(MergeSortTester.java各JARファイルに対して別々の実行コマンドを使用します。

答えて

1

のbuild.xmlでのあなたのマニフェストエントリは次のようになります。

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

正しい属性名は重要です。

+0

うわー...それがすべてだった。今は完璧に動作します。ありがとう! – Khaines0625

関連する問題