GUIのあるjavaアプリケーションが一瞬で終わる

GUI(AWT/Swing)のあるjavaアプリケーションをantから動かしたとき,画面が一瞬出てすぐ終わってしまう.結論から言うとjavaタスクに属性fork="true"を追加するとOKなのだが,とりあえずサンプルなど.

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.WindowConstants;

public class View{
  public static void main(String[] args){
    JFrame frame=new JFrame();
    frame.getContentPane().add(new JLabel("hello world.",JLabel.CENTER));
    frame.setSize(100,50);
    frame.setVisible(true);
    frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
  }
}

このソース(View.java)を以下のbuild.xmlでコンパイル&実行すると一瞬画面が出て終了する.

<project name="sample" default="run" basedir=".">
  <target name="compile">
    <javac srcdir="." destdir="."/>
  </target>

  <target name="run" depends="compile">
    <java classname="View" classpath="."/>
  </target>
</project>

javaタスクに属性fork="true"をつけると,画面を表示する.

<project name="sample" default="run" basedir=".">
  <target name="compile">
    <javac srcdir="." destdir="."/>
  </target>

  <target name="run" depends="compile">
    <java classname="View" classpath="." fork="true"/> <!-- fork="true"を指定 -->
  </target>
</project>