我遇到了一个我无法找到解决方案的奇怪问题。当我通过蚂蚁运行一个项目并且有一个未被捕获的异常时,蚂蚁只是完全没有错误地冻结。这是我的构建文件。这是一个多线程环境,也是
<fileset id="masterlibs" dir="${lib.dir}">
<patternset>
<include name="*.jar"/>
</patternset>
</fileset>
<target name="clean">
<delete dir="${build.dir}"/>
</target>
<target name="init">
<mkdir dir="${build.dir}"/>
</target>
<target name="compile" depends="init">
<javac srcdir="${src.dir}" destdir="${build.dir}">
<classpath>
<pathelement location="${build.dir}"/>
<fileset refid="masterlibs"/>
</classpath>
</javac>
</target>
<target name="run" depends="compile">
<java classname="stockData.AlertHandler" fork="true">
<classpath>
<pathelement location="${build.dir}"/>
<fileset refid="masterlibs"/>
</classpath>
<arg line="true"/>
<arg line="true"/>
<arg line="true"/>
<arg line="true"/>
<arg line="false"/>
<arg line="27_4"/>
<arg line="false"/>
</java>
</target>
答案 0 :(得分:1)
Ctrl+Break将向您显示一个线程转储,并指出每个线程正在做什么(加上任何死锁)。我猜这是你生成的AlertHandler
进程,在Ant环境之外调试它可能更容易。
如果Ctrl + Break不起作用(来自文章)
在UNIX平台上,您可以发送一个 通过使用kill向程序发出信号 命令。这是戒烟信号, 由JVM处理。对于 例如,在Solaris上,您可以使用 命令kill -QUIT process_id,where process_id是进程号 你的Java程序。
答案 1 :(得分:0)
Ant在运行要求交互式输入的java类时有时会冻结。您的AlertData类是否可能要求输入?