折衷的解决方式为,运行的dos窗口隐藏,
方法是编写vbs文件,步骤为:
在.bat文件" highlight="true">bat文件的同级目录下新建记事本文件,写如下代码:
Set ws = CreateObject("Wscript.Shell")
ws.run "cmd /c a.bat",vbhide
然后把记事本后缀名改为 vbs 保存,其中a.bat改为你的bat文件名。
其中vbhide是让dos窗口隐藏
但是有个问题,就是你的java被关闭后,cmd的进程依然存在,java进程也存在,
你可以用任务管理器看一下,可能有偏差,但是cmd进程一定存在。
不知道你为什么这么做,但还是尽量帮你一下吧。
既然写了启动jar包的批处理文件,总不能一直到任务管理器里一个个找jar启动对应的进程吧,因此对应的写了一个关闭jar服务的批处理文件。@echo off
title test
tasklist|find /i "test.exe"
if "%errorlevel%"=="1" (goto end) else (goto start)
:end
echo 系统程序不存在!
pause
exit
:start
echo 发现系统进程!
echo 开始卸载系统进程......
taskkill -f -t -im test.exe
echo 卸载系统进程结束......
pause
tasklist命令找到该程序的进程,taskkill杀掉该进程。
tomcat的启动、结束bat都是调用org.apache.catalina.startup.Bootstrap这个类实现的,startup.bat最终会执行Bootstrap.java里的
public void start() throws Exception {if( catalinaDaemon==null ) init()
Method method = catalinaDaemon.getClass().getMethod("start", (Class [] )null)
method.invoke(catalinaDaemon, (Object [])null)
}
shutdown.bat最终会执行Bootstrap里的
public void stopServer() throws Exception {Method method = catalinaDaemon.getClass().getMethod("stopServer", (Class []) null)
method.invoke(catalinaDaemon, (Object []) null)
}
你也可以这样写一个类来控制程序的启动、终止,bat就调用对应的方法。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)