tomcat常見錯誤及解決方案java
無論是初學者仍是有經驗的web程序員,使用Tomcat容器的時候會發生包括404,運行啓動錯誤,以及亂碼等等的問題,如今我將開發過程當中遇到的常見錯誤和簡單解決方法貼出來供你們看看,裏面有部分是同事總結,咱們共同完成的這篇文章。。。程序員
1:The JAVA_HOME environment variable is not defined This environment variable is needed to run this program;web
Re:沒有在在tomcat的配置文件.bash_profile中設置環境變量JAVA_HOME,具體設置方法爲:加入以下幾行:spring
JAVA_HOME=/home/tomcat/j2sdk1.4.2_08(具體值要以實際的jdk安裝路徑爲準)sql
export JAVA_HOMECLASSPATH=/home/tomcat/j2sdk1.4.2_08/lib/tools.jar:/home/tomcat/j2sdk1.4.2_08/lib/dt.jar數據庫
export CLASSPATHapache
2。 Error occurred during initialization of VM Could not reserve enough space for object heaptomcat
Re:在tomcat的bin目錄下,catalina.sh文件的tomcat內存參數配置過大,超過機器可用內存總數形成,修改到適當的值便可,修改的參數爲:JAVA_OPTS="-Xms50m -Xmx60m"安全
3 . tomcat啓動時報某個目錄沒有權限,啓動失敗,或者不能執行某些jsp頁bash
Re:tomcat須要tomcat用戶具備一些目錄和文件的相應權限, 全部目錄應該具備讀寫執行(瀏覽)的權限,jsp,class文件應該最少具備讀權限, 一些文件須要寫權限,下面是已知的須要讀寫權限文件的列表:
$CATALINA_HOME/logs下全部文件
$CATALINA_HOME/work下全部文件
$CATALINA_HOME/publish/main/count.txt文件
$CATALINA_HOME/publish/chatroom/resource下的全部.xml文件
全部上傳圖片目錄都須要寫權限。
改變文件目錄權限的方法:執行下面命令,設置全部的tomcat安裝下的文件和目錄,能夠保證執行,可是不是很安全。
1. 設置tomcat上級目錄/opt全部用戶都有讀寫執行權限:
chmod 777 [tomcat的上級目錄]
2. 設置tomcat5.0.28目錄下的全部文件的屬主爲tomcat:
chown -R tomcat [tomcat安裝目錄]
3. 設置全部tomcat5.0.28下的全部文件和目錄的屬主(tomcat)具備讀寫執行權限
chmod 700 -R /opt/tomcat5.0.28
4. 執行startup.sh文件後告訴地址已經使用,致使tomcat不能啓動
Re:多是前一次執行./shutdown.sh文件關閉tomcat時沒有中止已經啓動的java進程,而這個進程仍然在監聽tomcat所使用的端口,或者有另一個tomcat正在運行,server.xml文件中的監聽端口和當前tomcat衝突。
使用下面命令查看當前系統是否有正在監聽的端口(8080--webcache, 90--www或http).
1. 列出全部系統正在監聽的端口和綁定的地址netstat -l
2. 找出當前系統中的全部進程,管道符號過濾輸出顯示包含java字符串的行
ps -A |grep java
tty time proc
1021 ? java
3. 結束一個指定的進程:
kill [進程號]
4. 強制殺死一個進程:
kill -9 [進程號]
若是肯定不是別的tomcat運行致使的衝突或者沒有java進程運行能夠再次運行startup.sh文件啓動tomcat
1. org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Network error IOException: Connection refused: connect)
2. Caused by: java.sql.SQLException: Network error IOException: Connection refused: connect
3. Caused by: java.net.ConnectException: Connection refused: connect
Re:數據庫未開狀況下運行tomcat出現的問題,把數據庫打開就好了
4.java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V
at net.sf.cglib.core.ClassEmitter.begin_class(ClassEmitter.java:77) 這個問題是最最多見的,第一次整合ssh的時候會發現這個問題,有時候刪除掉相關的包仍是會衝突。因此解決辦法我通常是:
Re:把MyEclipse中的Hibernate中的有關ASM的包所有刪除,將spring中asm包拷貝進去重啓就Ok了,有時候須要刪除其餘文件,到網上找找吧;
還有個解決辦法:Spring 和 Hibernate 共用的一些 jar 文件發生了版本衝突, 刪除 WEB-INF/lib/asm-2.2.3.jar 而後重啓 Tomcat.
5 .javax.servlet.jsp.JspException: Invalid argument looking up property usersVO.account of bean loginForm
Re,通常提示這種錯誤表示VO中的form沒有實例化,在reset方法中new一下就Ok了。養成良好的編碼習慣能夠避免這種簡單錯誤。
6.嚴重: Exception loading sessions from persistent storage
Re:tomcat安裝目錄\work\Catalina\localhost\{webAppName}\SESSIONS.ser,刪除此文件