各位:
我做了一个简单的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上测试了,没有问题。