关于ant调用swing程序怪问题

 各位:
  我做了一个简单的JFrame,如下:

 

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.util.Map;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class LaunchViewer extends JFrame {
    private static final long serialVersionUID = 939549177411442972L;

    public static void main(String args[]) {
        String fileName = args[0];
        v.setTitle("Test Viewer");
        v.pack();
        v.setSize(800, 600);
        v.setVisible(true);
        
               /*
        try {
            Thread.sleep(1000000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
               */
    }
}

 

如果在cmd调用,没有任何问题,但是在Ant中调用的时候,总是一闪而过。ant脚本如下:

 

<project name="runsimpleviewer" default="run" basedir=".">
    <property name="lib.dir" value="./lib">
    
    <path id="classpath">
        <pathelement location="${basedir}\source\customs\target\test-classes">
        <pathelement location="${basedir}\source\customs\target\classes">
        <pathelement location="${jasper.jar.dir}">
        <fileset dir="${lib.dir}">
            <include name="**/*.jar">
        </fileset>
    </path>

    <target name="run">
        <java classname="LaunchViewer">
            <classpath refid="classpath">
        </java>
    </target>
</project>

 

由于在cmd下面没有问题,所以确定不是代码的事情,怀疑是ant在调用的时候什么地方没有停住,我觉得肯定有地方设置一下,但是没找到:(

 

无奈,我只能在代码中增加了sleep(10000),这下就正常了,但是不用想也知道,只能正常10秒钟

fork if enabled triggers the class execution in another VM (disabled by default)
你应该这样
[code="java"]

[/code]

因为你在ant运行程序,程序使用的vm和ant的vm是一个,ant脚本运行完vm就退出了,你的程序也就over了,你需要在你的 中指定使用单独的vm运行这个java类,看java任务的属性

我是使用eclipse里编译的,内涵ant,你试试下面的脚本,
[code="java"]<?xml version="1.0" encoding="UTF-8"?>

<target name="release-product" description="sdds" depends="jar">
        <copy todir="${release.lib.dir}" preservelastmodified="true" overwrite="true">
            <fileset dir="${basedir}/lib">
                <include name="**/*.jar"/>
            </fileset>
        </copy>
</target>

  <target name="jar"  description="jar for tag nms jar" >
    <property name="release.lib.dir" value="${basedir}/lib"/>
    <mkdir dir="${release.lib.dir}"></mkdir>
    <jar jarfile="${release.lib.dir}/${nms.name}.jar">
        <fileset dir="${nms.classes.dir}">
            <exclude name="META-INF/**"/>
            <include name="swing/**"/>
        </fileset>
    </jar>
  </target>

[/code]

我在eclipse上测试了,没有问题。