今天在给电脑配环境,安装httpd、tomcat、orcale、 pl/sql client。到tomcat的时候,出问题了。
环境:amd 64 jdk 64
在此之前,安装的是JRE 32位的。运行
startup.sh
只会显示:
Using CATALINA_BASE: /usr/local/apache-tomcat-6.0.20 Using CATALINA_HOME: /usr/local/apache-tomcat-6.0.20 Using CATALINA_TMPDIR: /usr/local/apache-tomcat-6.0.20/temp Using JRE_HOME: /usr/lib/jvm/jdk1.6.0_13
没有其它任何信息,用
netstat -lnpt Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:15398 0.0.0.0:* LISTEN 3814/qq tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN - tcp6 0 0 :::81 :::* LISTEN -
从列表中找不到8080端口被绑定。网上大堆的说法,找到一个消息说64位系统安装64位JDK,我又把32位JRE替换为64位JDK。
再次运行
startup.sh
这次多了一个消息说 $CATALINA_HOME没有logs/catalina.out日志文件,好吧。我
mkdir $CATALINA_HOME/logs/catalina.out
再次运行 startup.sh
提示
Using CATALINA_BASE: /usr/local/apache-tomcat-6.0.20 Using CATALINA_HOME: /usr/local/apache-tomcat-6.0.20 Using CATALINA_TMPDIR: /usr/local/apache-tomcat-6.0.20/temp Using JRE_HOME: /usr/lib/jvm/jdk1.6.0_13
这样的提示信息,但端口却没被监听,看日志显示:
Caused by: java.lang.ClassNotFoundException: org.apache.catalina.startup.Bootstrap at java.net.URLClassLoader$1.run(URLClassLoader.java:200) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:252) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) Could not find the main class: org.apache.catalina.startup.Bootstrap. Program will exit.
有日志就好办。我问朋友,朋友说这是低级的java配置问题,自己解决。我一看我的~/.bashrc文件有
export JAVA_HOME=/usr/lib/jvm/jdk1.6.0_13 export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=.:$JAVA_HOME/lib/
难道是这个被我用过千万次的export语句有问题(这个配置基本没有用过,很少手动编译java代码,关键把classpath配置正确即可),为了确保正确,用vi写了个Test类,javac编译并用java执行,打印"Hello",正确。
再次回过头来看tomcat目录下的内容,没什么问题。google之,在网上碰见有兄弟和我一样的问题,说tomcat下载时解压后bin文件只有.sh和.bat文件,却少了某些重要jar包。
找到问题所在就好,多次从官网 重新下载了tar.gz包(同时包括"apache-tomcat-6.0.20-src.zip "和"apache-tomcat-6.0.20-deployer.zip "),解压后tomcat目录都没有,后来无意在另外一个网址 下载了apache-tomcat-6.0.18.tar.gz ,再次解压查看bin目录,发觉文件多了,有网上说的bootstarp.jar等几个重要的文件。
再次执行 startup.sh 查看端口 netstat -lnpt
发觉8080端口被tomcat监听,正确。
总结下来:
1、正确的tomcat 2.X 下载URL地址是:http://labs.xiaonei.com:8081/apache-mirror/tomcat/tomcat-6/v6.0.20/bin/ ,而非tomcat网站提供的:http://tomcat.apache.org/download-60.cgi?Preferred=http%3A%2F%2Flabs.xiaonei.com%2Fapache-mirror。