背景:
linux使用ANT編譯java類並部署到Tomcat下,然後使用腳本(deploy.sh)開啟 Tomcat,腳本如下:
deploy.sh(其絕對路徑為:/usr/local/myapp/deploy.sh)
1/usr/local/apache-tomcat-5.5.20/bin/shutdown.sh
2ant
3/usr/local/apache-tomcat-5.5.20/bin/startup.sh
4
其中各行的意義:
(1)關閉tomcat
(2)編譯java類並部署到tomcat
(3)開啟tomcat
這裡使用的命令都是絕對路徑運行的。
問題來了:
(1)在項目中安排了log4j的日志輸出到myapp.log,其路徑寫 法:../log/myapp.log;啟動服務器的時候在catalina.out中輸出錯誤信息, 說../log/myapp.log沒有找到。
(2)在程序中使用了output/files/,程序完成後很難才找到文件,因為其位 置並不像在window下調試時一樣,最後使用 find -name output -type d 命令才找到,發現原來這個文件夾所在的位置就是在:/usr/local/myapp/下面 。
倪端初現:
可見,使用腳本開啟tomcat時如果以絕對路徑的方式去開啟的話,那麼在程 序中的相對路徑就會以腳本的當前目錄作為路徑的起始點。這樣就導致了在文件 的位置上出現變化,使得文件管理出現困難甚至對已有的文件造成破壞。
問題解決:
解決路徑的問題有很多,在這裡主要說一下以下兩個思路:
(1)使用可配置的絕對路徑,在ANT部署的時候,可以將Window下的路徑替換 成Linux下的絕對路徑,這樣就很方便管理,此為上策。
(2)使用相對路徑時,開啟Tomcat時一定要切換到tomcat的bin文件夾開啟, 這樣相對路徑指向的位置就和Window下的一致了,此為下策也。
使用相對路徑的腳本如下:
1/usr/local/apache-tomcat-5.5.20/bin/shutdown.sh
2ant
3cd/usr/local/apache-tomcat-5.5.20/bin/
4./startup.sh
其中各行的作用:
(1)關閉tomcat
(2)編譯java類並部署文件
(3)切換目錄到tomcat的bin文件夾
(4)開啟tomcat
估計其他應用服務器下使用腳本和相對路徑也時也會遇到一樣的問題,方法 估計也是類似的。