解决window服务器启动jar程序出现控制台卡住问题

第一次在Windows服务器上通过bat脚本启动jar包,程序运行后没有管他,等到第二天再看的时候,发现控制台日志hung住了,回车后刷刷的打出了一堆日志,而定时任务也未能正常执行。

后来又发现几次,在jar应用启动的过程中,也会出现类似情况,平时都是直接敲回车,这次发现有点不对劲。于是想办法解决,好在很容易找到了解决办法。

先说说原因:

CMD控制台开启了快速编辑模式导致

原理呢?

这是快速编辑模式的功能。当程序不断滚动控制台窗口的内容时,用户无法合理地选择文本。

因此,控制台主机程序只是停止读取stdout/stderr输出,程序将挂起,直到用户完成操作。

这可以更改,您需要关闭启用快速编辑模式选项。

请注意,这个“挂起”与程序以远高于控制台主机可以使用的速率生成stdout输出时得到的执行暂停没有本质区别。尽管这些延误是有限的。

而且这并不是用户停止程序的唯一方法,他也可以简单地按ctrl+s。按ctrl+q将再次恢复程序。

知道了原因和原理,那解决这个问题就相对明确了。有两种方式解决这个问题。

方法一:手动操作关闭控制台的“快速编辑模式”

1.在启动程序的cmd窗口鼠标右键,选择属性

2.点击属性打开窗口后,会出现快速编辑模式,取消勾选

3.点击确认即可

方法二:在bat脚本文件中操作注册表关闭“快速编辑模式”。bat脚本中命令如下:

@echo off
reg add HKEY_CURRENT_USER\Console /v QuickEdit /t REG_DWORD /d 00000000 /f

可以将这段指令放在你的bat启动脚本中。