启动tomcat的时候一个奇怪的类找不到的错误研究!

    技术2022-05-11  72

     启动的时候有如下的错误:

    [WARN ]com.sun.faces.config.rules.ConverterRule.end(ConverterRule.java:127) - [ConverterRule]{faces-config/converter} Merge(OmnipotentConverter,null)java.lang.ClassNotFoundException: [Ljava.lang.String;at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1355)at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1201)at com.sun.faces.config.ConfigureListener.configure(ConfigureListener.java:615)at com.sun.faces.config.ConfigureListener.configure(ConfigureListener.java:402)at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:328)at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3763)at org.apache.catalina.core.StandardContext.start(StandardContext.java:4211)at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:759)at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739)at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524)at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:904)at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:867)at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:474)at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1122)at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:310)at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1021)at org.apache.catalina.core.StandardHost.start(StandardHost.java:718)at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1013)at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442)at org.apache.catalina.core.StandardService.start(StandardService.java:450)at org.apache.catalina.core.StandardServer.start(StandardServer.java:709)at org.apache.catalina.startup.Catalina.start(Catalina.java:551)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)at java.lang.reflect.Method.invoke(Method.java:494)at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:294)at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:432)[ERROR]org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3767) - 发送初始化事件给listenercom.sun.faces.config.ConfigureListener时有异常......

    工程不能成功发布.

    在网上收到了很多谈论,其中有

       Re: java.lang.ClassNotFoundException: [Ljava.lang.String; Posted: Jun 2, 2006 2:25 AM   in response to: cayhorstmann     Reply Hi,We have encountered a similar error a while back whilewe were testing the JMX RI. In your case the culprit seems to be here: Caused by: java.lang.ClassNotFoundException: [Ljava.lang.String; at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1508) The problem is that the catalina code apparently calls ClassLoader.loadClass() instead of calling Class.forName(String, boolean, ClassLoader) Hope this helps,-- daniel

    The problem you've run into seems to have been caused by a regression in the Java runtime, and is independent of the webapp classloader.In fact, it can be reproduced very easily using this test program:public class test {public static void main(String[] args) throws Exception {String[] s = new String[] { "123" };String clName = s.getClass().getName();test.class.getClassLoader().loadClass(clName);}}This program runs fine with JDK 1.5, but throws this exception on JDK 1.6:Exception in thread "main" java.lang.ClassNotFoundException: [Ljava.lang.String;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:306)at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)at java.lang.ClassLoader.loadClass(ClassLoader.java:251)at test.main(test.java:7)I'll file a P1 against JDK 1.6 and will update you as soon as I know more.

    这里讨论的是关于类似这个问题的内容,可以看出,主要是说在tomcat启动后它要加载开发人员自己写的一些类文件

    但是这时会由于jdk 版本的问题,而使一些方法在使用的时候出现了不兼容或使用方式变化的问题,而使启动不能成功.

    根据这样的线索,我注意观察了几个用到jdk的地方,发现在启动tomcat的时候,版本过低,于是在eclipse中将

    其配置到较高的版本(jdk1.5.0.7)原来是jdk1.5,于是tomcat成功启动.至于换成jdk6.0是否会有问题,我还没有

    实验,待测试中:)


    最新回复(0)