2012-03-15 125 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

螞蟻是建立你的項目,而不是運行它們。 – 2012-03-15 20:35:35

+0

我朋友的教授堅持說。 :) – 2012-03-15 20:37:21

+0

小心答案,你需要做一些工作 – 2012-03-15 20:38:45

回答

2

我們最終弄明白了。這條線

<java classname="mypackage.Main"> 

:替換此行

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

我歡迎更多的細節解釋了爲什麼會是這樣一個答案,雖然。 :)

+0

非常感謝。 – 2015-09-22 15:36:18

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

感謝叉的建議,但我不認爲有必要定義不相互依賴的不同目標。我呢? – 2012-03-15 20:39:31

+0

不,你可以用叉子,但不是每個人都用叉子,常見做法是有不同的目標 – 2012-03-15 20:40:49