java - tomcat访问异常
迷茫
迷茫 2017-04-17 17:46:04
[Java讨论组]

昨天把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.(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)
迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(3)
怪我咯
java.lang.ClassFormatError: Truncated class file
java.lang.NoClassDefFoundError: Could not initialize class org.apache.tomcat.ut
il.buf.B2CConverter

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

ringa_lee

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

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

PHP中文网

刚大致看了一下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什么的重新下一遍

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号