.BAT文件:在后台启动JVM

4

阅读了.bat文件,非阻塞运行/启动后,我仍然不能实现我想要的功能:在执行启动命令后关闭.BAT文件。我的问题是当JVM启动应用程序并启动窗口时,我最终会有两个窗口被打开,当事实上其中一个(.BAT命令)只是一个启动过程,对用户没有任何意义。

这里是我的.BAT代码:

@echo off
setlocal
rem Starts the application

rem Check for Java Home and use that if available
if not "[%JAVA_HOME%]"=="[]" goto start_app
echo. JAVA_HOME not set. Application will not run!
goto end
:start_app
echo. Using java in %JAVA_HOME%
start "Application" "%JAVA_HOME%/bin/java.exe" -jar lib/pathToMyJarFile
goto end

:end

我希望一旦JVM启动,.BAT进程能够终止(或者至少关闭窗口)。

2个回答

7

尝试使用javaw.exe代替java.exe。


谢谢!使用javaw解决了问题。(是否带/b选项启动) - Cristian Botiza
1
我原以为这是批处理文件使用的问题,但看起来我们需要使用无控制台的Java启动器。根据SUN文档(http://docs.oracle.com/javase/1.4.2/docs/tooldocs/windows/java.html):javaw命令与java相同,只是使用javaw时没有关联的控制台窗口。当您不想出现命令提示符窗口时,请使用javaw。但是,如果由于某种原因启动失败,javaw启动器将显示一个带有错误信息的对话框。 - Cristian Botiza
继续我的原始问题...我也考虑编写一个本地的(C++)应用程序来以编程方式调用JVM。我的问题是在什么情况下这真正有用?对于我描述的问题似乎并不必要,因为它可以更容易地解决。非常感谢, Cristian - Cristian Botiza

1

这并没有起到作用,尽管你提供的链接有非常有用的信息。谢谢! - Cristian Botiza
当然,Christian。只是确认一下,你使用的是这个命令 - start "Application" /b "%JAVA_HOME%/bin/java.exe" -jar lib/pathToMyJarFile,对吗? - icyrock.com
抱歉,我误解了您的想法 - 我所写的代码将会关闭原始命令行窗口,但是应用程序窗口将保持打开。Gijs所说的方法正是您所需要的 - 很高兴您已经解决了问题! - icyrock.com

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接