别被tomcat报错给忽悠了

阅读更多

    今天在给电脑配环境,安装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。

 

 

 

你可能感兴趣的:(Tomcat,Java,Apache,JVM,JDK)