首页 > tomcat访问异常

tomcat访问异常

昨天把IDE换到了eclipse上,什么都没改
然后今天启动tomcat后直接访问localhost:8080报了异常(直接使用cmd然后startup启动)

异常信息:

25-Apr-2016 12:20:09.788 SEVERE [http-apr-8080-exec-3] org.apache.coyote.http11.
AbstractHttp11Processor.process Error processing request
 java.lang.ClassFormatError: Truncated class file
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:348)
        at sun.nio.cs.AbstractCharsetProvider.lookup(AbstractCharsetProvider.jav
a:142)
        at sun.nio.cs.AbstractCharsetProvider.access$000(AbstractCharsetProvider
.java:45)
        at sun.nio.cs.AbstractCharsetProvider$1.next(AbstractCharsetProvider.jav
a:183)
        at sun.nio.cs.AbstractCharsetProvider$1.next(AbstractCharsetProvider.jav
a:173)
        at java.nio.charset.Charset.put(Charset.java:539)
        at java.nio.charset.Charset.access$200(Charset.java:271)
        at java.nio.charset.Charset$3.run(Charset.java:581)
        at java.nio.charset.Charset$3.run(Charset.java:573)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.nio.charset.Charset.availableCharsets(Charset.java:572)
        at org.apache.tomcat.util.buf.B2CConverter.<clinit>(B2CConverter.java:49
)
        at org.apache.catalina.connector.CoyoteAdapter.parsePathParameters(Coyot
eAdapter.java:1095)
        at org.apache.catalina.connector.CoyoteAdapter.postParseRequest(CoyoteAd
apter.java:811)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
a:513)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp
11Processor.java:1091)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(
AbstractProtocol.java:668)
        at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpo
int.java:2463)
        at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoin
t.java:2452)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.
java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
.java:617)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskTh
read.java:61)
        at java.lang.Thread.run(Thread.java:745)

25-Apr-2016 12:20:09.788 SEVERE [http-apr-8080-exec-4] org.apache.coyote.http11.
AbstractHttp11Processor.process Error processing request
 java.lang.NoClassDefFoundError: Could not initialize class org.apache.tomcat.ut
il.buf.B2CConverter
        at org.apache.catalina.connector.CoyoteAdapter.parsePathParameters(Coyot
eAdapter.java:1095)
        at org.apache.catalina.connector.CoyoteAdapter.postParseRequest(CoyoteAd
apter.java:811)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
a:513)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp
11Processor.java:1091)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(
AbstractProtocol.java:668)
        at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpo
int.java:2463)
        at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoin
t.java:2452)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.
java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
.java:617)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskTh
read.java:61)
        at java.lang.Thread.run(Thread.java:745)

刚大致看了一下tomcat的源码,按照题主的日志分析是在加载B2CConverter类的时候,需要执行<clinit>里面的程序也就是

static {
    for (Charset charset: Charset.availableCharsets().values()) {
        encodingToCharsetCache.put(
                charset.name().toLowerCase(Locale.ENGLISH), charset);
        for (String alias : charset.aliases()) {
            encodingToCharsetCache.put(
                    alias.toLowerCase(Locale.ENGLISH), charset);
        }
    }
}

这段代码,再根据日志分析,是在加载Charset的时候出现java.lang.ClassFormatError: Truncated class file类截断异常,估计是加载sun.nio.cs里面的字符集类报出来的也就是jre/lib/charsets.jar里面的类。

建议重新编译一下项目,如果还是不行,JDK什么的重新下一遍


java.lang.ClassFormatError: Truncated class file
java.lang.NoClassDefFoundError: Could not initialize class org.apache.tomcat.ut
il.buf.B2CConverter

看上去你的 B2CConverter.class 文件坏掉了,试试重新下载个 tomcat


java.lang.NoClassDefFoundError: Could not initialize class org.apache.tomcat.ut il.buf.B2CConverter

这么明显看不到,类没有导进去啊

【热门文章】
【热门文章】