У меня есть программа Java, которая требует, чтобы MiddleWare нашего API был запущен первым, чтобы она работала. MiddleWare содержится в файле Java Jar.
Обычно у меня все работает, если я открываю две отдельные командные строки и сначала запускаю jar-файл, а затем запускаю Java-программу.
Я сейчас упаковываю новую программу для наших клиентов и хотел бы найти способ автоматически запускать MiddleWare перед запуском приложения. Я пробовал что-то вроде этого,
@echo off
set APP_HOME=C:\Temp\Hammer
rem Set APP_HOME to the place where you installed Hammer.
if "%~1"=="" (
echo You must provide a Python script to run.
pause
) else (
java.exe -jar C:\GMSEC_API\bin\bolt.jar
java.exe -cp "%APP_HOME%\lib\jython.jar;%APP_HOME%\lib\Hammer.jar;%APP_HOME%\lib\gmsecapi.jar;%APP_HOME%\examples\Python;%APP_HOME%\jython2.5.3\Lib;%CLASSPATH%" bridenstine.hammer.main.Main %*
)
Но поскольку первая команда java.exe сначала запускает MiddleWare, и он работает в цикле до тех пор, пока не будет завершен, вторая команда java.exe не запустится, пока не будет выполнена ctr^c
первая команда.
Как же мне запустить обе команды синхронно, используя один CMD-файл?
решение1
Попробуйте использовать команду start:
start java.exe -jar C:\GMSEC_API\bin\bolt.jar
start java.exe -cp "%APP_HOME%\lib\jython.jar;%APP_HOME%\lib\Hammer.jar;%APP_HOME%\lib\gmsecapi.jar;%APP_HOME%\examples\Python;%APP_HOME%\jython2.5.3\Lib;%CLASSPATH%" bridenstine.hammer.main.Main %*
Если вы хотите, чтобы окно оставалось открытым, используйте:
start cmd /k java.exe -jar C:\GMSEC_API\bin\bolt.jar
start cmd /k java.exe -cp "%APP_HOME%\lib\jython.jar;%APP_HOME%\lib\Hammer.jar;%APP_HOME%\lib\gmsecapi.jar;%APP_HOME%\examples\Python;%APP_HOME%\jython2.5.3\Lib;%CLASSPATH%" bridenstine.hammer.main.Main %*