Startup.bat
depende de duas variáveis env: CATALINA_HOME e JRE_HOME (ou JAVA_HOME).
Você deve ter o conjunto JRE_HOME ou JAVA_HOME, caso contrário, você não poderá executar a inicialização clicando duas vezes.
Isso nos deixa com CATALINA_HOME. O script de inicialização tentará adivinhá-lo se não estiver definido, mas isso funcionará apenas se for executado a partir do diretório atual (ou se é pai para ser preciso). Se você tentar executá-lo de outro diretório e CATALINA_HOME não estiver configurado, ele falhará (com uma mensagem sobre ele).
Se esse é o seu problema, você deverá ver uma mensagem semelhante na parte superior da janela do cmd:
The CATALINA_HOME environment variable is not defined correctly This environment variable is needed to run this program
Outro problema que você pode encontrar é quando seu caminho contém espaços. Parece que o seu não, mas ainda pode ser útil para os outros, por isso vou incluir esta informação.
Quando seu comando inclui espaços, você precisa citar seu comando start
, certo? Isso deve fazer:
"cmd.exe /c start \"my path to tomcat bin/startup.bat\""
Errado. Você acaba dando uma olhada na janela de comando intitulada meu caminho para o tomcat bin / startup.bat
start
recebe o primeiro argumento citado como título ... que legal. A forma correta é:
"cmd.exe /c start \"\" \"my path to tomcat bin/startup.bat\""
Mas espere
ambos os problemas realmente impedirão que a janela do Tomcat apareça - você diz que fecha , então é iniciado e depois morre. Hmm ... isso é mais provável porque já existe um processo escutando na porta 8080 . Talvez seu java IDE inicie o Tomcat? Ou inicia outro servidor ouvindo em 8080?
Se for essa a causa, você deverá ver uma linha semelhante no log do Tomcat (eles estão armazenados em CATALINA_HOME/logs
):
java.net.BindException: Address already in use: JVM_Bind
Se esse é o seu problema, você precisa parar a primeira instância ou reconfigurar os processos do servidor para que cada um escuta em uma porta diferente.
Nota: eu usei o seguinte para iniciar o Tomcat a partir de java, funciona bem para mim:
Runtime r=Runtime.getRuntime();
r.exec("cmd.exe /c start startup.bat", //path to executable
null, // env vars, null means pass parent env
new File("my path to tomcat/bin")); // working directory