2012-03-15 8 views
3

`ant run`を使ってJava Swingアプリケーションを実行するにはどうしたらいいですか?非常に単純なアプリケーションのために

package mypackage; 

import javax.swing.*; 

public class Main { 
    public static void main(String[] args) { 
    JFrame frame = new JFrame(); 
    frame.setSize(400, 400); 
    frame.setVisible(true); 
    } 
} 

次のbuild.xmlファイルは動作しません。ウィンドウが非常に短い時間表示され、プログラムが終了したようです。

<?xml version="1.0" encoding="utf-8"?> 
<project> 
    <path id="project.class.path"> 
    <pathelement location="build"/> 
    </path> 

    <target name="compile" > 
    <mkdir dir="build" /> 
    <javac srcdir="src" destdir="build" debug="true" debuglevel="lines,source"> 
     <classpath refid="project.class.path" /> 
    </javac> 
    </target> 

    <target name="run" depends="compile"> 
    <java classname="mypackage.Main"> 
     <classpath refid="project.class.path" /> 
    </java> 
    </target> 

    <target name="clean" > 
    <delete failonerror="false" verbose="true"> 
     <fileset dir="build" includes="**/*.class"/> 
    </delete> 
    </target> 
</project> 

しかし、予想通り、次の作業を実行している:

ant compile 
cd build/ 
java mypackage.Main 
+0

Antはプロジェクトをビルドするためのもので、実行するものではありません。 –

+0

私の友人の教授は主張する。 :) –

+0

答えを見て、あなたはいくつかの作業を行う必要があります –

答えて

2

最終的にわかりました。このラインで

<java classname="mypackage.Main"> 

:この行を置き換え

<java classname="mypackage.Main" fork="true"> 

は、私も、なぜそうなのか、より詳細に説明して答えを歓迎したいです。 :)

+0

ありがとうございました。 –

4

ここでは以下のように、異なるターゲットを定義

<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/YOUR.jar" basedir="build/classes"> 
      <manifest> 
       <attribute name="Main-Class" value="packageName.classname"/> 
      </manifest> 
     </jar> 
    </target> 

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

</project> 

そして使用し、

ant compile 
ant jar 
ant run 

コマンドであります

+0

フォークのアドバイスをありがとうが、私はお互いに依存しない別のターゲットを定義する必要はないと思う。私は? –

+0

いいえ、あなたはフォークを使うことができますが、誰もがフォークを使用しているわけではありません。一般的なプラクティスは異なるターゲットを持つことです。 –

関連する問題