Startup.bat
iki env değişkenine bağlıdır: CATALINA_HOME ve JRE_HOME (veya JAVA_HOME).
JRE_HOME veya JAVA_HOME setine sahip olmanız gerekir, aksi takdirde çift tıklayarak başlatmayı çalıştıramazsınız.
Bu bizi CATALINA_HOME ile bırakır. Başlangıç betiği ayarlanmadıysa tahmin etmeye çalışacaktır, ancak bu yalnızca geçerli dizinden (veya kesin olması için) çalıştırıldığında çalışır. Başka bir dizinden çalıştırmayı denerseniz ve CATALINA_HOME ayarlanmadığında başarısız olur (bunun hakkında bir mesajla).
Sorununuz buysa, cmd penceresinin en üstünde benzer bir mesaj görmelisiniz:
CATALINA_HOME ortam değişkeni doğru tanımlanmadı Bu ortam değişkeni bu programı çalıştırmak için gereklidir
Karşılaşabileceğiniz başka bir sorun, yolunuz boşluk içerdiğinde ortaya çıkar. Sizinki görünmüyor, ama yine de başkalarına faydalı olabilir, bu yüzden bu bilgiyi ekleyeceğim.
Komutunuz boşluk içerdiğinde komutunuzu vermeniz gerekir start
, değil mi? Bu yapmalı:
"cmd.exe /c start \"my path to tomcat bin/startup.bat\""
Yanlış. Tomcat bin / startup.bat 'a giden yolum başlıklı komut penceresinde göze çarpıyorsunuz
start
, ilk alıntıyı başlık olarak alıyor ... ne kadar hoş. Doğru form:
"cmd.exe /c start \"\" \"my path to tomcat bin/startup.bat\""
Fakat bekle
bu sorunların her ikisi de Tomcat penceresinin görünmesini durduracak - kapandığını söylüyorsunuz , böylece başlıyor ve sonra ölüyor. Hmm ... bu büyük olasılıkla 8080 numaralı bağlantı noktasını dinleyen bir işlem zaten var . Belki Java IDE'niz Tomcat’i başlatır? Veya 8080’de dinleyen başka bir sunucu mu başlatıyor? Sebep buysa, Tomcat günlüğünde benzer bir satır görmelisiniz (depolanırlar CATALINA_HOME/logs
):
java.net.BindException: Adres zaten kullanımda: JVM_Bind
Bu sizin sorununuzsa, ilk örneği durdurmanız veya sunucu işlemlerinizi her birinin farklı bağlantı noktalarında dinleyeceği şekilde yeniden yapılandırmanız gerekebilir.
Not: Tomcat'ı java'dan başlatmak için aşağıdakileri kullandım, benim için iyi çalışıyor:
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
cmd'yi açık bırakacaksınız, ancak bu muhtemelen istediğiniz şey değil . Yolun / çalışan dizinin başlangıçta başarısız olmasına neden olduğu (toplu komutlarda komutları yürütemediği için) bir sorun olduğunu tahmin ediyorum. Ayrıca, özel sorununuzu daha iyi açıklamak için başlığı değiştirmenizi öneririm