如何让启动JavaFX项目的Batch File运行后自动关闭CMD窗口
问题根因
你当前的批处理直接同步调用java.exe,CMD进程会阻塞等待Java进程结束再释放,因此CMD窗口会一直保留,且CMD被关闭时会主动终止绑定的子Java进程。
解决方案1:使用start命令解绑进程(适用于可接受批处理黑框闪过的场景)
修改批处理代码如下,通过start命令将Java进程转为独立后台进程,批处理执行完成后自动退出:
@echo off set JLINK_VM_OPTIONS= set DIR=%~dp0 :: start后第一个空双引号为窗口标题参数,不可省略 start "" "%DIR%\java" %JLINK_VM_OPTIONS% -m Main/org.openjfx.Main %* exit
解决方案2:使用javaw.exe启动GUI程序(推荐,无多余黑框)
JavaFX是GUI程序,可直接使用JRE自带的无控制台版本运行程序javaw.exe,完全不会绑定CMD窗口,连批处理运行的闪框都可以避免:
@echo off set JLINK_VM_OPTIONS= set DIR=%~dp0 "%DIR%\javaw" %JLINK_VM_OPTIONS% -m Main/org.openjfx.Main %*
如果需要留存程序运行日志排查问题,可以添加输出重定向:
@echo off set JLINK_VM_OPTIONS= set DIR=%~dp0 "%DIR%\javaw" %JLINK_VM_OPTIONS% -m Main/org.openjfx.Main %* > "%DIR%\app_runtime.log" 2>&1
内容的提问来源于stack exchange,提问作者Nils Schmidt
相关产品推荐
相关产品推荐

