我尝试编写一个powershell脚本来运行我的Jar,这只是一个使用tomcat catalina servlet的简单的hello world spring web mvc应用程序。问题是执行我的Jar文件后,powershell实例被servlet占用。这意味着我无法运行连续命令->在本地主机上打开chrome:8080。
我当前的Powershell脚本:
java -jar .\helloworld-0.0.1-SNAPSHOT.jar
# doesnt get executed due to the servlet occupation of the ps instance
Start-Process "chrome.exe" "http://localhost:8080"
是否可以在同一powershell实例中运行第二个命令,还是需要打开另一个ps实例?如果可以,我该怎么办?
java.exe
执行Java代码将运行代码同步,即以blocking方式运行。因此,直到服务器关闭后才到达Start-Process
调用,这显然不是目的。
您有两个基本选择来进行呼叫异步:
Start-Process
在新窗口中运行命令(仅Windows):Start-Process
# Opens the server in a *new window* (Windows only)
Start-Process java '-jar .\helloworld-0.0.1-SNAPSHOT.jar'
或Start-Job
[v6 +]),它在不可见的后台进程或线程中运行命令,您可以使用Start-Job
cmdlet进行监视和管理:Start-ThreadJob
使用Start-ThreadJob
获取作业的输出,并使用*-Job
停止作业(从而停止服务器)。