首页 > 代码库 > 升级到JDK8,编译时发生 Error:java: java.lang.ExceptionInInitializerError

升级到JDK8,编译时发生 Error:java: java.lang.ExceptionInInitializerError

技术分享

编译的时候出现这个问题。使用1.7的jdk没问题,但是由于po主的项目中,使用了java8编写的代码,解决java8兼容问题成为解决这个问题的首选方案。

这个日志太过简单,只告知一个异常信息,这个异常发生的原因主要是由于静态类,静态变量初始化时发生了异常,po的项目是个很早的项目,静态类太多,无法直接定位异常信息到底是如何产生,控制台也没有输出堆栈,这给排查问题带来了极大的不便,第一个要解决的应该就是讲详细的堆栈信息输出,能方便的定位到问题的根源。

注意到第三条Infomation,Compliation completed with 1 error..... 这说明,异常产生时是在编译阶段,先去看看Idea的build的日志。日志的目录在 

/Users/xxxx/Library/Logs/IdeaIC2016.1/build-log

打开bulid.log,可以看到具体的异常的堆栈信息。

技术分享

 

从堆栈的信息来看,lombok.javac.Javac.getCtcInt 应该是出现了类冲突的问题,这个类应该是IDEA的自有类发生的异常,是IDEA的Bug.

然后万能的google下后,

https://intellij-support.jetbrains.com/hc/en-us/community/posts/205434150-IDEA-2016-3-compile-error-please-help-

这个同学发生了相同的问题,检查了下我的IDEA的版本,这位同学的IDEA版本是 2016.3。po下我的:

IntelliJ IDEA 2016.1.1

Build #IC-145.597, built on March 29, 2016
JRE: 1.8.0_40-release-b132 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o

版本还比较这位同学的要旧一些,所以!先升级一下IDEA吧!升级去了,待会来po是不是已经解决!

 

<style>p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Monaco; color: #f5f5f5; background-color: #000000 } span.s1 { } span.Apple-tab-span { white-space: pre }</style> <style>p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Monaco; color: #f5f5f5; background-color: #000000 } span.s1 { }</style>

升级到JDK8,编译时发生 Error:java: java.lang.ExceptionInInitializerError