博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Tomcat - ClassFormatException的解决方法
阅读量:5242 次
发布时间:2019-06-14

本文共 796 字,大约阅读时间需要 2 分钟。

问题与分析

在使用Tomcat7运行web项目时报错如下:

严重: Compilation errororg.eclipse.jdt.internal.compiler.classfmt.ClassFormatExceptionat ....

仔细查看了报错的堆栈信息,发现基本说的都是无法编译jsp的错误。百度了一番,才明白原来是因为Tomcat7和jdk8存在着不兼容的情况。Tomcat通过ecj.jar来编译jsp,这个ecj是Eclipse自己开发和使用的针对Java的编译器。

ecj即the Eclipse Compiler for Java,Eclipse并没有使用JDK自带的编译器,而是使用自己开发的ecj编译器,而ecj也通过了java的验证。除了Eclipse之外,Tomcat也用到了ecj,用于动态编译jsp文件,可以在Tomcat的lib目录下找到该jar包。

而这个ClassFormatException,就是因为Tomcat7使用的ecj.jar版本比较低,里边使用的是较低版本的jdk,导致无法在jdk8的环境下去编译jsp文件。

解决方案

方案一

既然是Tomcat7和jdk8不兼容导致的,那么我们只要使用Tomcat8或者jdk7自然就没这个问题了。如果希望还是使用Tomcat7和jdk8来运行项目,就需要使用方案二了。

方案二

将Tomcat7的lib目录下的ecj.jar换成Tomcat8里边的ecj.jar,比如说将ecj3.7.2换成ecj.4.4.2,这样就可以让Tomcat7和jdk8兼容了。如果你懒得去下载Tomcat8然后获取里边的高版本ecj.jar,可以去Maven中央仓库获取对应版本的ecj.jar:

参考链接

转载于:https://www.cnblogs.com/yulinlewis/p/9955618.html

你可能感兴趣的文章
查询项目中未被使用的js、css和图片
查看>>
Cookie.js
查看>>
Django Blog学习笔记(一)
查看>>
什么是“堆”,"栈","堆栈","队列",它们的区别
查看>>
什么是lambda函数?它有什么好处?
查看>>
在线的IDE(Ideone)支持Java/Python/Go/D
查看>>
第4次作业
查看>>
hash 哈希
查看>>
淘宝的技术博客
查看>>
Linux commands
查看>>
JVM ,Java paper
查看>>
https://www.callicoder.com/java-8-completablefuture-tutorial/
查看>>
YARN Resource Management
查看>>
作业5:需求分析
查看>>
socket入门
查看>>
[工作中的设计模式]装饰模式decorator
查看>>
swift objective-c混编操作
查看>>
黑盒测试方法
查看>>
创建Java程序并设置快捷提示
查看>>
组合模式
查看>>