Startup.bat
depende de duas variáveis env: CATALINA_HOME e JRE_HOME (ou JAVA_HOME).
Você deve ter JRE_HOME ou JAVA_HOME definido, caso contrário, não poderá executar a inicialização clicando duas vezes.
Isso nos deixa com CATALINA_HOME. O script de inicialização tentará adivinhar se não estiver definido, mas isso funcionará apenas se for executado a partir do diretório atual (ou do pai para ser mais preciso). Se você tentar executá-lo em outro diretório e o CATALINA_HOME não estiver definido, ocorrerá uma falha (com uma mensagem sobre isso).
Se esse for o seu problema, você verá uma mensagem semelhante na parte superior da janela do cmd:
A variável de ambiente CATALINA_HOME não está definida corretamente Esta variável de ambiente é necessária para executar este programa
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 outras pessoas, por isso vou incluir esta informação.
Quando seu comando inclui espaços, você precisa citar seu start
comando, certo? Isso deve fazer:
"cmd.exe /c start \"my path to tomcat bin/startup.bat\""
Errado. Você acaba olhando para a janela de comando intitulada meu caminho para tomcat bin / startup.bat
start
leva o primeiro argumento citado como título ... que legal. O formulário correto é:
"cmd.exe /c start \"\" \"my path to tomcat bin/startup.bat\""
Mas espere
esses dois problemas realmente impedirão a exibição da janela do Tomcat - você diz que ela fecha , então ela inicia e depois morre. Hmm ... isso é mais provável porque já existe um processo escutando na porta 8080 . Talvez o seu IDE java inicie o Tomcat? Ou inicia outro servidor ouvindo no 8080? Se essa é a causa, você deve ver uma linha semelhante no log do Tomcat (elas estão armazenadas CATALINA_HOME/logs
):
java.net.BindException: Endereço já em uso: JVM_Bind
Se esse for o seu problema, você precisará interromper a primeira instância ou reconfigurar os processos do servidor para que cada um escute em uma porta diferente.
Nota: Eu usei o seguinte para iniciar o Tomcat a partir do 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
cmd /k batchfile
deixará o cmd aberto, mas provavelmente não é o que você deseja. Eu acho que é um problema com caminhos / diretório em execução, causando a falha na inicialização (pois não é possível executar comandos no lote). Também gostaria de sugerir para alterar o título para explicar melhor o seu específico questão