12

私は次のものを持っていますbuild.xml

<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/DependencyFinder.jar" basedir="./build/classes">
        <manifest>
            <attribute name="DependencyFinder" value="main"/>
        </manifest>
    </jar>
</target>

<target name="run">
    <java jar="./build/jar/DependencyFinder.jar" classname="${main-class}" fork="true"/>                    
</target>

</project>

これが私のディレクトリ構造です:

/build /lib /MagicFolder /Src /build.xml

フォルダにはファイルsrcが含まれてい.javaます。

へのパスMagicFolderは入力パラメーターである必要があります。

lib私のビルドに含める必要がある外部 .jar ライブラリがあります。

build.jar and.class` ファイルをコンパイルするフォルダ

質問: どうすれば変更できますbuild.xmlか? 私のbuild.xmlはずです:

  1. 外部ライブラリを追加./lib/jbl.jar
  2. アプリケーションを実行すると、アプリケーションに 2 つの入力パラメータが設定されます
4

3 に答える 3

39

コードをコンパイルするために jar をクラスパスに追加する必要がある場合 (申し訳ありませんが、何を求めているのか明確ではありません)、<javac>タスクを次のように変更する必要があります。

<javac srcdir="./src" destdir="./build/classes">   
    <classpath>
        <pathelement path="lib/jbl.jar"/>
    </classpath>
</javac>

または、作成中の jar にコンテンツを追加する必要がある場合は、タスクを次のようjbl.jarに変更する必要があります。<jar>

<jar destfile="./build/jar/DependencyFinder.jar" basedir="./build/classes>
    <zipgroupfileset dir="lib" includes="jbl.jar" />
    <manifest>
        <attribute name="DependencyFinder" value="main"/>
        <attribute name="Main-Class" value="org.ivanovpavel.YourMainClass"/>
    </manifest>
</jar>

呼び出す引数を追加するに<java>は、ネストされた<arg>要素を使用します。

<target name="run">
    <java jar="./build/jar/DependencyFinder.jar:lib/jbl.jar" classname="dependencyfinder.DependencyFinder">  
        <arg value="Alexander Rosenbaum"/>
        <arg value="Dmitry Malikov"/>
    </java>                  
</target>
于 2013-10-29T12:27:08.327 に答える
4

Java プログラムを実行するには 2 つの方法があります。「jar」オプションを使用するのが最も便利で、実行可能 jar と呼ばれますが、これを機能させるには、次のようにマニフェスト ファイルで Main クラスとクラスパスの両方を指定する必要があります。

<jar destfile="${jar.file}" basedir="${classes.dir}">
    <manifest>
        <attribute name="Main-Class" value="${jar.main.class}" />
        <attribute name="Class-Path" value="${jar.classpath}" />
    </manifest>
</jar>

これを行う方法の詳細な回答については、次を参照してください。

一貫した環境で Java プログラムを実行する

于 2013-10-29T17:37:37.590 に答える