首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Windows命令行程序派生出多线程Java程序,spawner直到spawnee结束才会结束。我怎样才能防止绞刑?

从Windows命令行程序派生出多线程Java程序,spawner直到spawnee结束才会结束。我怎样才能防止绞刑?
EN

Stack Overflow用户
提问于 2010-05-17 16:16:32
回答 2查看 1.1K关注 0票数 1

简短版本:

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

长篇版本:

我试图从从Windows命令行启动的程序(NAnt的任务,也不应该重要)中生成一个多线程Java程序(Selenium,不是说它应该重要)。我使用Windows "start“命令来完成这个操作,生成的进程已经启动并正确运行。生成过程接收回并完成控制(NAnt说“构建成功”),但实际上并没有退出到命令行。当生成的进程最终终止(可能是几个小时后)时,命令进程将返回并出现命令行提示符。

例如:

代码语言:javascript
复制
<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>

生产:

代码语言:javascript
复制
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的窗口,然后.

代码语言:javascript
复制
C:\Ross>

很明显,有些东西阻止了nant进程的终止,但是Windows命令不应该阻止这种情况吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-05-17 17:28:32

您在执行任务时遇到了问题,因为派生程序默认为false。来自NAnt文档

获取或设置一个值,该值指示是否应生成应用程序。如果您生成一个应用程序,它的输出将不会被NAnt记录。默认情况是false

蚂蚁文档 (记住,NAnt不是Ant,但仍然是.)中,有一个使用exec任务的派生参数的具体例子:

代码语言:javascript
复制
<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将打开该页,但生成将继续,而无需等待输出或任务完成。

票数 2
EN

Stack Overflow用户

发布于 2010-05-17 16:31:32

我不能百分之百肯定这就是你想要的,但我认为你想要的是javaw而不是java。

摘自Sun 6文档:

javaw命令与java完全相同,只是javaw没有关联的控制台窗口。如果不希望出现命令提示符窗口,请使用javaw。但是,如果启动由于某种原因而失败,javaw启动程序将显示一个包含错误信息的对话框。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2850771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档