当前位置:编程学习 > JS >>

class版本问题导致-严重: Null component Catalina:type=JspMonitor,name=jsp,WebModule=//localhost/web

在eclipse-ee中启动tomcat运行java web项目,没有出现问题,但是单独启动tomcat时就报下面错误
2013-9-30 9:46:36 org.apache.tomcat.util.modeler.Registry registerComponent
严重: Null component Catalina:type=JspMonitor,name=jsp,WebModule=//localhost/web
,J2EEApplication=none,J2EEServer=none
java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: java.lang.UnsupportedClassVersionError: com/baby/util/Onli
neUserListenNew : Unsupported major.minor version 51.0 (unable to load class com
.baby.util.OnlineUserListenNew)
        at org.apache.catalina.loader.WebappClassLoader.findClassInternal(Webapp
ClassLoader.java:2531)
        at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoa
der.java:1010)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoa
der.java:1483)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoa
der.java:1361)
        at org.apache.catalina.startup.WebAnnotationSet.loadClassAnnotation(WebA
nnotationSet.java:145)
        at org.apache.catalina.startup.WebAnnotationSet.loadApplicationListenerA
nnotations(WebAnnotationSet.java:73)
        at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotatio
ns(WebAnnotationSet.java:56)
 
            经过一个小时的观察,最终发现问题原因是class版本太高问题,因为我是用eclipse-ee开发的,在eclipse-ee中,我用的是jdk7开发的,因此把项目部署到tomcat中时,默认用的是项目的jdk7进行编译java文件,然后和项目一起发布到tomcat里面,这个时候如果是在eclipse-ee中启动tomcat,那么此时tomcat用的是eclipse-ee中项目默认的jdk,因此也是用jdk7进行启动tomcat的,因此可以正常启动tomcat。
 
       但是如果单独启动tomcat,因为我在电脑属性里面设置的java_home是jdk6,这个时候,如果单独启动tomcat,那么tomcat用的就是电脑属性里面的java_home,即jdk6,那么在启动的过程中,tomcat在加载class文件时,就会报class版本错误,如上“Unsupported major.minor version 51.0”,因为java是向下兼容的,即jdk7能兼容小于jdk7编译的class文件,jdk6能兼容小于jdk6编译的class文件,jdk6能不能兼容jdk7编译的class文件,所以报上面错误。
 
        解决办法
                  1、修改eclipse-ee中项目用的jdk7为jdk6,
                  2、修改电脑属性里面设置的java_home是jdk7
                 3、修改catalina.bat,在第二行,加上下面这句话 set JAVA_HOME="D:\soft\apache-tomcat-6.0.26\jdk1.7.0_03"      即修改tomcat使用jdk7启动
 
 
补充:软件开发 , Java ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,