Quando executo o arquivo startup.bat do Apache Tomcat manualmente, o console do cmd permanece aberto; quando executo o mesmo no código java, o console é fechado. (Estou tentando automatizar alguns processos no meu projeto). Para Windows, parece que quando o Tomcat é executado como um aplicativo, o console deve permanecer aberto após a execução do .bat.
Como posso fazer isso acontecer para o meu código java? obrigado
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ãoRespostas:
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:
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
):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:
fonte
Verifique as propriedades do arquivo .bat (clique com o botão direito do mouse), deve haver a opção de manter o console aberto. Última guia, tanto quanto me lembro.
fonte
Vá para a sua
tomcat/bin
pasta. Edite ostartup.bat
arquivo e comente a última mas uma linha que dizComente usando
REM
no início.o console permanecerá aberto. Se essa linha for comentada, significa que é necessário fechar o console e gravar a saída em algum arquivo de log externo.
fonte