java 通過(guò)cmd 調(diào)用命令啟動(dòng)tomcat的操作
我們有時(shí)候?yàn)榱朔奖悖緯?huì)做一個(gè)項(xiàng)目管理,便于啟動(dòng)和關(guān)閉我們部署在服務(wù)器上面的項(xiàng)目,我這里就采用了java的方式,嗯......僅限于參考......
public static void main(String args[]) throws IOException {
String exec = "C:/software/apache-tomcat-8.5.24/bin/startup.bat";
Runtime runtime = Runtime.getRuntime();
runtime.exec(exec);
}
如上所述,如果我們執(zhí)行這段代碼,那么我們的tomcat是啟動(dòng)不了的,我們用cmd試一下,請(qǐng)看下面,會(huì)出現(xiàn)錯(cuò)誤信息,(在bin目錄的父目錄下調(diào)用除外)

打開(kāi)用于啟動(dòng)Tomcat的批處理文件startup.bat,首先判斷CATALINA_HOME環(huán)境變量是否為空,如果為空,就將當(dāng)前目錄設(shè)為CATALINA_HOME的值。
接著判斷當(dāng)前目錄下是否存在bin\catalina.bat,如果文件不存在,將當(dāng)前目錄的父目錄設(shè)為CATALINA_HOME的值。
根據(jù)Tomcat安裝目錄的層次結(jié)構(gòu),最后CATALINA_HOME的值被設(shè)為T(mén)omcat的安裝目錄。如果環(huán)境變量CATALINA_HOME已經(jīng)存在,則通過(guò)這個(gè)環(huán)境變量調(diào)用bin目錄下的“catalina.bat start”命令。
于是了解到兩個(gè)信息,一是Tomcat啟動(dòng)時(shí),需要查找CATALINA_HOME這個(gè)環(huán)境變量,如果在Tomcat的bin目錄下調(diào)用startup.bat,Tomcat會(huì)自動(dòng)并正確設(shè)置CATALINA_HOME;二是執(zhí)行startup.bat命令,實(shí)際上執(zhí)行的是“catalina.bat start”命令
如果要想在任意目錄下都能啟動(dòng)Tomcat,就需要設(shè)置CATALINA_HOME環(huán)境變量,你可以將CATALINA_HOME添加到Windows 系統(tǒng)的環(huán)境變量中,其值就是Tomcat的安裝目錄。
添加CATALINA_HOME環(huán)境變量的過(guò)程和前述添加JAVA_HOME環(huán)境變量的過(guò)程是一樣的。如果你不想在系統(tǒng)的環(huán)境變量中添加,也可以直接在startup.bat文件中進(jìn)行設(shè)置
set CATALINA_HOME=C:\software\apache-tomcat-8.5.24
我這里采用將 CATALINA_HOME 添加到 startup.bat 文件中,shutdown.bat 同理。如果找不準(zhǔn)位置,可以將設(shè)置CATALINA_HOME環(huán)境變量的這句代碼放到文件的第一行。

在這里設(shè)置后,不論是通過(guò)cmd在其它目錄下啟動(dòng)還是通過(guò)java代碼啟動(dòng)tomcat都將無(wú)比絲滑......
注意:如果將該java程序打成war包放在tomcat下運(yùn)行,則無(wú)法通過(guò)該程序啟動(dòng)其他tomcat,原因暫時(shí)未知......當(dāng)然,可將其打包成jar包通過(guò)cmd運(yùn)行程序,直接裸奔,則程序可成功運(yùn)行,打開(kāi)其他的tomcat......
補(bǔ)充知識(shí):使用java命令執(zhí)行bat文件(重啟本地指定位置的Tomcat)
使用下面的代碼執(zhí)行指定位置的bat文件
public static void main(String[] args) {
Runtime rt = Runtime.getRuntime(); //返回當(dāng)前應(yīng)用程序的Runtime對(duì)象
Process ps=null;//制子進(jìn)程的執(zhí)行或獲取該子進(jìn)程的信息
try {
ps=rt.exec("cmd.exe /c start C:\\Users\\qiang\\Desktop\\restartTomct.bat");//這里的C:\\Users\\qiang\\Desktop\\restartTomct.bat 換成你自己的bat文件的絕對(duì)路徑
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
int i=ps.exitValue();
if(i == 0){//執(zhí)行成功
System.out.println("執(zhí)行完成");
}else{//執(zhí)行失敗
System.out.println("執(zhí)行失敗");
}
ps=null;
}
=================================================
bat文件的名稱(chēng)為 restartTomct.bat
=================================================
@echo log location @echo 下面的c代表進(jìn)入的是盤(pán)符c 下 ,也就是Tomcat所在盤(pán)符的位置,(需要修改為自己的盤(pán)符) c: @echo 進(jìn)入Tomcat的bin目錄 (需要修改為自己的Tomcat的bin目錄的位置) cd C:\Users\qiang\Desktop\apache-tomcat-7.0.53\apache-tomcat-7.0.53\bin\ call shutdown.bat @echo wait for 10 sec........ ping -n 10 127.0.0.1 call startup.bat echo ----------- >> C:\Users\qiang\Desktop\apache-tomcat-7.0.53\tomcat_restart.log exit
以上這篇java 通過(guò)cmd 調(diào)用命令啟動(dòng)tomcat的操作就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot+MyBatis+AOP實(shí)現(xiàn)讀寫(xiě)分離的示例代碼
高并發(fā)這個(gè)階段,肯定是需要做MySQL讀寫(xiě)分離的。本文主要介紹了SpringBoot+MyBatis+AOP實(shí)現(xiàn)讀寫(xiě)分離的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11
springboot配置過(guò)濾器和多個(gè)攔截器、執(zhí)行順序(案例詳解)
這篇文章主要介紹了springboot配置過(guò)濾器和多個(gè)攔截器、執(zhí)行順序,在文章開(kāi)頭給大家介紹了過(guò)濾器配置的兩種方法,創(chuàng)建兩個(gè)攔截器,重寫(xiě)方法結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-10-10
DecimalFormat數(shù)字格式化 0和# 的區(qū)別及說(shuō)明
這篇文章主要介紹了DecimalFormat數(shù)字格式化 0和# 的區(qū)別及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10
springboot整合websocket最基礎(chǔ)入門(mén)使用教程詳解
這篇文章主要介紹了springboot整合websocket最基礎(chǔ)入門(mén)使用教程詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03
SpringBoot 配置文件中配置的中文,程序讀取出來(lái)是亂碼的解決
這篇文章主要介紹了SpringBoot 配置文件中配置的中文,程序讀取出來(lái)是亂碼的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09

