简短版本:
如何防止在Windows中生成的Java进程阻止生成进程的结束?
长篇版本:
我试图从从Windows命令行启动的程序(NAnt的任务,也不应该重要)中生成一个多线程Java程序(Selenium,不是说它应该重要)。我使用Windows "start“命令来完成这个操作,生成的进程已经启动并正确运行。生成过程接收回并完成控制(NAnt说“构建成功”),但实际上并没有退出到命令行。当生成的进程最终终止(可能是几个小时后)时,命令进程将返回并出现命令行提示符。
例如:
<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命令不应该阻止这种情况吗?
发布于 2010-05-17 17:28:32
您在执行任务时遇到了问题,因为派生程序默认为false。来自NAnt文档
获取或设置一个值,该值指示是否应生成应用程序。如果您生成一个应用程序,它的输出将不会被NAnt记录。默认情况是false。
在蚂蚁文档 (记住,NAnt不是Ant,但仍然是.)中,有一个使用exec任务的派生参数的具体例子:
<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将打开该页,但生成将继续,而无需等待输出或任务完成。
发布于 2010-05-17 16:31:32
我不能百分之百肯定这就是你想要的,但我认为你想要的是javaw而不是java。
摘自Sun 6文档:
javaw命令与java完全相同,只是javaw没有关联的控制台窗口。如果不希望出现命令提示符窗口,请使用javaw。但是,如果启动由于某种原因而失败,javaw启动程序将显示一个包含错误信息的对话框。
https://stackoverflow.com/questions/2850771
复制相似问题