一.端口占用
linux下啟動tomcat的時候,如果服務啟動不成功,可以到查看logs文件夾下的catalina.out 日志文件,cat我的日志文件可得到如下的錯誤信息:(Caused by: java.lang.Exception: Socket bind failed也是端口占用)
cat catalina.out
Error: Exception thrown by the agent : java.rmi.server.ExportException: Port already in use: 8101; nested exception is:
java.net.BindException: Address already in useFeb 27, 2011 3:25:39 PM org.apache.catalina.loader.WebappClassLoader loadClassINFO: Illegal access: this web application instance has been stopped already. Could not load com.funambol.server.tools.directorymonitor.FileChangeEvent. The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact.
從字面上來看,是我的8101端口被占用了,應該是rmi需要用到這個端口,於是使用
netstat -anp
命令來查看各端口被進程占用的情況,這個命令輸出包括進程的pid,得到這個pid之后,使用命令:
ps -ef|grep PID
即可查看進程的詳細情況。
如果確認此進程可停止的話,
kill pid
重啟tomcat就OK了!
二.tomcat無法獲取到環境變量
在linux下安裝好tomcat啟動時報如下錯誤:
Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
At least one of these environment variable is needed to run this program
原因:找不到jdk或者jre路徑。
解決辦法:在setclasspath.bat的開頭聲明環境變量,打開tomcat的bin目錄下面的setclasspath.sh,添加紅色部分,路徑修改為自己機器jdk和jre路徑即可。
#!/bin/sh
...
export JAVA_HOME=/opt/zimbra/jdk1.6.0_31
export JRE_HOME=/opt/zimbra/jdk1.6.0_31/jre
# Make sure prerequisite environment variables are set
if [ -z "$JAVA_HOME" -a -z "$JRE_HOME" ]; then
三.setclasspath.sh問題
這個可能是沒有在 /etc/profile 中配置環境,這是第一種可能;如果是這種情況的話,可以這樣做:
vim /etc/profile
並在文件末尾加上
export CATALINA_HOME=/usr/local/tomcat
export CATALINA_BASE=/usr/local/tomcat
最后 source /etc/profile 使剛才的配置生效就可以了;
第二種可能,是bin目錄下的文件權限不夠,ll一下,然后給bin目錄下的所有文件增加執行權限:
chmod a+x *
四.錯誤: 找不到或無法加載主類 org.apache.catalina.startup.Bootstrap
問題描述:
tomcat安裝之后,正常啟動,但是ps 查看進程卻沒有發現啟動,嘗試關閉,彈出來錯誤信息。
找不到或無法加載主類 org.apache.catalina.startup.Bootstrap
原因:tomcat/bin下面缺少一個 bootstrap.jar 的文件
解決方法:官網重新下載安裝即可。你如果出現問題的包也是官網下載的,那么就嘗試換個鏡像重新下載,
因為我這個問題,也是官網下載的包出現的問題。
后續添加....