gpt4 book ai didi

java - 从Windows命令行程序生成多线程Java程序,spawner在spawnee结束之前不会结束。如何防止挂起?

转载 作者:行者123 更新时间:2023-11-30 05:12:42 28 4
gpt4 key购买 nike

简短版本:

如何防止 Windows 中生成的 Java 进程阻止生成进程结束?

长版:

我正在尝试从 Windows 命令行启动的程序(同样,NAnt 的 任务,这并不重要)生成一个多线程 Java 程序(Selenium RC,这并不重要)。我使用 Windows“启动”命令执行此操作,生成的进程已启动并正确运行。生成过程接收控制权并完成(NAnt 说“BUILD SUCCEEDED”),但实际上并没有退出到命令行。当生成的进程最终终止时(可能是几个小时后),命令进程返回并出现命令行提示符。

例如:

<target name="start_rc">
<exec program="cmd" failonerror="false" workingdir="${ross.p5.dir}\Tools\selenium\selenium-server-1.0.1" verbose="true">
<arg value="/C"/>
<arg value="start"/>
<arg value="java"/>
<arg value="-jar"/>
<arg path="${ross.p5.dir}\Tools\selenium\selenium-server-1.0.1\selenium-server.jar"/>
<arg value="-userExtensions"/>
<arg path="${ross.p5.dir}\Tools\selenium\selenium-server-1.0.1\user-extensions.js"/>
<arg value="-browserSideLog"/>
<arg value="-log"/>
<arg value="${ross.p5.dir}\artifacts\selenium.log"/>
<arg value="-debug"/>
</exec>
</target>

产品:

C:\Ross>nant start_rc
NAnt 0.86 (Build 0.86.2898.0; beta1; 12/8/2007)
Copyright (C) 2001-2007 Gerry Shaw
http://nant.sourceforge.net

Buildfile: file:///C:/Ross/ross.build
Target framework: Microsoft .NET Framework 3.5
Target(s) specified: start_rc


start_rc:

[exec] Starting 'cmd (/C start java -jar C:\p5\Tools\selenium\selenium-server-1.0.1\selenium-server.jar -userExtensions C:\p5\Tools\selenium\selenium-server-1.0.1\user-extensions.js -browserSideLog -log C:\p5\artifacts\selenium.log -debug)' in 'C:\p5\Tools\selenium\selenium-server-1.0.1'

BUILD SUCCEEDED

Total time: 4.1 seconds.

...然后什么都没有,直到我关闭运行 Java 的窗口,然后...

C:\Ross>

显然有什么东西阻止了 nant 进程终止,但是 Windows START 命令不应该阻止这种情况吗?

最佳答案

您的 exec 任务存在问题,因为 spawn 默认为 false。来自 NAnt documentation :

Gets or sets a value indicating whether the application should be spawned. If you spawn an application, its output will not be logged by NAnt. The default is false.

Ant documentation (记住,NAnt 是“Not Ant”,但仍然...),有一个使用 exec 任务的 spawn 参数的具体示例:

<property name="browser" location="C:/Program Files/Internet Explorer/iexplore.exe"/>
<property name="file" location="ant/docs/manual/index.html"/>

<exec executable="${browser}" spawn="true">
<arg value="${file}"/>
</exec>

当该浏览器任务触发时,Internet Explorer 将打开该页面,但构建将继续,而不等待输出或任务完成。

关于java - 从Windows命令行程序生成多线程Java程序,spawner在spawnee结束之前不会结束。如何防止挂起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2850771/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com