1. 程式人生 > >如何通過Java程式碼獲取tomcat伺服器的絕對路徑

如何通過Java程式碼獲取tomcat伺服器的絕對路徑

有時候我們可能會有這樣的需求:獲取tomcat的絕對路徑,以便於進行一些其他的操作,看過很多老哥的方式大多都類似於這種:

①:

Test.class.getResource("/") 

②:

System.getProperty("user.dir")

上述兩種方式的呢我先說第一種:第一種是獲取Classpath的絕對路徑。一般情況下是也可以間接獲取到tomcat伺服器的路徑,但是有一種情況例外,當我們改變tomcat下面的配置檔案server.xml的appBase地址時,情況就會發生變化。預設情況下為<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">這個屬性表示當我們啟動Tomcat時載入tomcat下面的工程專案。這個我們可以自定義,比如我們改成appBase="D:\webapps",這樣當啟動伺服器時便會載入我們定義目錄下的工程專案。所以如果自定義了appBase屬性值的Test.class.getResource("/") 雖然還是可以定位到classpath的路徑,但是已經很tomcat的路徑沒有什麼關聯了。

第二種方式呢,表示獲取使用者的當前工作目錄,web專案中預設情況獲取的值為/tomcat_home/bin/,我在windows和centos中測試的都沒有什麼問題,但是在Redhat中測試的結果卻不是這樣的,尤其是在我改了appBase屬性之後。偏偏我的專案又需要在Redhat作業系統中跑,所以這一種方式只有放棄了。

最後呢,經過我的苦苦尋找,終於讓找到一種比較合適的方式:

System.getProperty("catalina.home")

能夠幫你準確的定位到tomcat絕對路徑。注意在在windows和*inux中路徑分隔符不一樣,在window是\,在*inux中是/,千萬需要注意這點。網路上許多老哥說最好不要用第二種方式,不然很可能會出現一些致命的錯誤,我們這些後車之師就不要再次犯錯了.

希望這篇文章能夠幫助到大家,謝謝~