Как запустить приложения Java Swing с помощью `ant run`? - PullRequest
3 голосов
/ 16 марта 2012

Для очень простого приложения

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

Ответы [ 2 ]

4 голосов
/ 16 марта 2012

Здесь определите различные цели следующим образом,

<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

Команды

2 голосов
/ 16 марта 2012

Мы поняли это в конце концов.Замените эту строку:

<java classname="mypackage.Main">

этой строкой:

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

Я бы приветствовал ответ, который более подробно объясняет, почему это так.:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...