昨天把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)
刚大致看了一下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.NoClassDefFoundError: Could not initialize class org.apache.tomcat.ut il.buf.B2CConverter
这么明显看不到,类没有导进去啊
java.lang.ClassFormatError: Truncated class file java.lang.NoClassDefFoundError: Could not initialize class org.apache.tomcat.ut il.buf.B2CConverter
看上去你的 B2CConverter.class 文件坏掉了,试试重新下载个 tomcat