编译的时候出现这个问题。使用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 应该是出现了版本兼容的问题。找下万能的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是不是已经解决!

+++++++++++++++++++++++++我是华丽的分割线++++++++++++++++++++

IDEA升级完成后,发现编译依然还是有问题,发生同样的错误,那位同学发生的那个问题其实更偏重于IDEA默认选择了jdk1.8来编译,所以想解决怎么回去到 1.7,而并没有解决掉1.8与lombok的某些版本不兼容的问题。

于是不得不从原理上先去了解下lombok。

lombok是什么?

简单的一句话说,lombok是个编译期的注解工具,注解的主要的目的就是为了能少写一些枯燥的java代码,比如getter,setter之类的。使用lombok就能在编译期间,将你使用注解标注生成代码已完成编译过程。

详情:https://projectlombok.org/

从异常上看,这个有点像版本不匹配造成的,NoSuchFiled,应该是版本太低的原因。于是我脑残的觉得,是IDEA的lombok的插件的问题造成的,升级了一下lombok的Idea的插件,问题依旧!

这个项目不是我的,对依赖并不了解。既然不是插件的问题,如果项目中需要使用lombok的注解,那项目一定需要依赖lombok。

mvn dependency:tree 打出依赖树,果真,在项目中有使用lombok的0.12的一个版本的依赖。

实在是纳闷,这种包应该是在编译期间使用呀,为啥会被二方包依赖进来,scope应该是provided。

于是将 lombok的包Exclusion掉。世界瞬间变美好起来!

我来总结一下:在JDK1.7的环境下,lombok的 0.12的版本并不存在问题。编译没啥问题。升级到JDK8之后,lombok的0.12版本不兼容,于是出现了编译器的错误。这个时候你需要升级你的lombok的版本,如果你使用的是maven生命周期管理工具,记得把scope设置成 provider,发布二方包的同学,这种包就不要打进二方包里面了。


升级到JDK8,编译时发生 Error:java: java.lang.ExceptionInInitializerError的更多相关文章

  1. 在Idea2017.1中编译时发生如下的错误

    错误 在Idea2017.1中编译时发生如下的错误 Information:java: javacTask: 源发行版 1.8 需要目标发行版 1.8 Information:java: Errors ...

  2. 学习笔记——ESP8266项目的例子编译时发生cannot find -lstdc++问题的解决

    在尝试对进行ESP8266项目的例子进行编译时发生cannot find -lstdc++问题 第一想法是安装libstdc++,结果安装时又发生了下面的情况: 再次查找原因,最后发现当前安装的交叉编 ...

  3. android 6.0编译时出现ERROR:Security problem ,see jack server log【转】

    本文转载自:http://blog.csdn.net/a567890k/article/details/52956798 最近编译Android6.0时经常出现以下错误 临时解决方法: Buildin ...

  4. an安装jenkins时遇到ERROR: No Java executable found in current PATH: /bin:/usr/bin:/sbin:/usr/sbin的问题

    # sudo /etc/init.d/jenkins restartERROR: No Java executable found in current PATH: /bin:/usr/bin:/sb ...

  5. eclipse启动时发生的Initializing Java Tooling错误

    eclipse在启动发生An internal error occurred during: "Initializing Java Tooling". java.lang.Null ...

  6. 解决办法:CMake编译时出现“error in configuration process project files may be invalid”

    无论是CMake2.84 还是当前最新的CMake2.87都可能会出现这种错: 查遍国内外的网上都没有给出可行办法,结果还是自己解决了 现把出错原因和解决办法如下:出错原因:因是英文版本,通常安装没有 ...

  7. Vue使用Typescript开发编译时提示“ERROR in ./src/main.ts Module build failed: TypeError: Cannot read property 'afterCompile' of undefined”的解决方法

    使用Typescript开发Vue,一切准备就绪.但npm start 时,提示“ ERROR in ./src/main.tsModule build failed: TypeError: Cann ...

  8. 《OpenGL编程指南第七版》学习——编译时提示“error C2381: “exit” : 重定义;__declspec(noreturn) 不同”错误的解决办法

    解决办法一. #if defined(_WIN32) # ifndef GLUT_BUILDING_LIBextern _CRTIMP void __cdecl exit(int); 上面是glut. ...

  9. libevent在windows下用visual studio编译时出现error C2894错误的原因与解决方法

    libevent是一个使用很广泛的网络库,今天想了解下它.于是去git clone了一份源码,用vs2005的命令行:nmake -f makefile.nmake编译之,顺利编译通过,生成三个静态库 ...

随机推荐

  1. 转:Exception loading sessions from persistent storage

    直用tomcat一段时间都正常无事,最近一次启动tomcat就发生以下异常: 严重: IOException while loading persisted sessions: java.io.EOF ...

  2. 《大话操作系统——做坚实的project实践派》(4)

     操作系统内核必需要关注一个详细硬件平台的设备 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbG1ub3M=/font/5a6L5L2T/fontsi ...

  3. hdu 3172 Virtual Friends(并查集,字典树)

    题意:人与人交友构成关系网,两个人交友,相当于两个朋友圈的合并,问每个出两人,他们目前所在的关系网中的人数. 分析:用并查集,其实就是求每个集合当前的人数.对于人名的处理用到了字典树. 注意:1.题目 ...

  4. HDU3351 Seinfeld 【贪心】

    Seinfeld Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total S ...

  5. Linux时间时区详解与常用时间函数

    时间与时区 整个地球分为二十四时区,每个时区都有自己的本地时间. Ø  UTC时间 与 GMT时间 我们可以认为格林威治时间就是时间协调时间(GMT = UTC),格林威治时间和UTC时间都用秒数来计 ...

  6. CSS3 - 鼠标移入移出时改变样式

    1,使用伪类实现样式切换伪类是CSS2.1时出现的新特性,让许多原本需要JavaScript才能做出来的效果使用CSS就能实现.比如实现下面的鼠标悬停效果,只要为:hover伪类应用一组新样式即可.当 ...

  7. C#数组 多个集合和数组的操作(合并,去重,拆分,判断)

    http://www.cnblogs.com/liguanghui/archive/2011/11/09/2242309.html http://www.cnblogs.com/dreamszx/ar ...

  8. hdu3293(pell方程+快速幂)

    裸的pell方程. 然后加个快速幂. No more tricks, Mr Nanguo Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: ...

  9. java面向对象编程知识点总结

    一:今天完成 上午详细了解了java面向对象编程的一些细节,记录如下. 1)类 是一种引用类型,包含一个签名和一个主体,主体是放在花括号里面的成员,成员包括字段和方法,还有构造方法.初始化程序和嵌套类 ...

  10. 多语言中的“默认语言”设置

    最近在搞一个多语言的东西,打算如果用户是中文环境就显示中文,其他任何非中文环境就显示英文.换句话说,把默认语言设置成英文. 不过因为VS是中文的,发现即使默认资源文件是英文(AppResource.r ...