zhulibin2012

window执行jar包会出现假死现象解决

windows jar包启动的几种方式介绍

 

  1. java -jar xxx.jar(jar包的路径),最普通简单的方式,通过windows的命令行窗口启动,并在命令行窗口运行,输出。可以在启动的时候增加参数指定启动的端口(server.port=8080)或者指定环境等
  2. start /min java -server -Xms1024m -Xmx20480m -jar xxx.jar;重新启动一个窗口去运行jar包,不依赖当前黑窗口,该方法是重新启动一个专门的java窗口去运行jar包,可以设置jvm的参数,有很多博客介绍说这个是jar包后台运行,其实不是,只是不像第一条一样依赖当前的命令行窗口,但是会依赖另外一个新开的java运行窗口,都是窗口关闭就停止了。
  3. start /b java -server -Xms1024m -Xmx20480m -jar xxx.jar;类似第一种启动方式,也是在当前窗口输出启动信息,在当前窗口运行,依赖当前命令行窗口,只不过可以指定jvm的参数。
  4. javaw -jar XXX.jar;javaw也是启动jar包的一种命令,我只在windows上使用过,javaw.exe是相似的和java.exe 是一个win32的GUI应用,应用提供自己的GUI窗口,不启用控制台。这个命令可以使jar包后台启动,输入命令后当前窗口完成,会在后台启动一个javaw进程,如果你的程序不是界面图形化程序,就只会跑在后台。
  5. Jar 添加为windows service 服务
service.bat 

%1 mshta vbscript:CreateObject("WScript.Shell").Run("%~s0 ::",0,FALSE(window.close)&&exit java -sever_name -jar D:\start\123.jar

# %1 mshta vbscript:CreateObject(“WScript.Shell”).Run(“%~s0 ::”,0,FALSE)(window.close)&&exit 隐藏cmd的运行窗口。

       6.jar包Linux后台不挂断启动方式,并指定输出日志文件:nohup java -jar xxx.jar > log.txt &,输入此命令后可能会有询问error日志的输出地方,可以再次输入指定输出的日志文件即可

jar包的停止

以上启动方式,1,2,3,都可以通过ctrl+c或关闭当前窗口停止,4,5,需要后台查找该程序的进程,通过杀掉进程方式停止

window运行jar包假死现象

1.现象描述

使用java -jar xxx.jar,打包成jar之后部署在windows上之后,运行一段时间项目就假死一样,这个状态下程序是访问不了的,需要到命令行容器随意敲一个键,总之光标移动了就行,然后卡住的内容就会迅速输出到窗口,不敲任何键程序就一直卡在那

2.根因分析

cmd默认开启了“快速编辑模式”,只要当鼠标点击cmd任何区域时,就自动进入了编辑模式,之后的程序向控制台输入内容甚至后台的程序都会被阻塞。

我们在控制台里面回车或者右键鼠标后,自动退出了编辑模式。因此,控制又恢复输出内容,服务端又正常了。

3.解决

1.点击属性

 

 2.修复

 

posted on 2020-10-22 10:27  zhulibin2012  阅读(3378)  评论(3编辑  收藏  举报

导航