Java 服务端架构
Spring、Netty、日志框架与工程化实战
🎨 视觉封面Lombok与Java9兼容性问题
很久没更新博客,本想写篇关于Java9 集合工厂函数的博客,却没想到阴差阳错先遇到Lombok与Java9的兼容性问题。
我在一个试验用的工程里,想做一些关于Java9新特性的试验,该工程原本是依赖lombok的。结果,编译时,原有的使用**@Slf4j**注解的的类报编译错误。
Error:(18, 1) java: 程序包 javax.annotation 不可见 (程序包 javax.annotation 已在模块 java.xml.ws.annotation 中声明, 但该模块不在模块图中)
这首先就证明了,Java9对来老项目是不能轻易升级的。有很多的代码、依赖库需要更新、重写。
我尝试增加一个module-info.java根据提示,require相应的module试图解决该问题。
module httpserver {
requires java.xml.ws.annotation;
requires lombok;
}
结果,在IDE中没有错误提示,但是编译运行时,由Lombok生成的log会报错
Error:(32, 13) java: 找不到符号 符号: 变量 log 位置: 类 com.coderli.http.server.SimpleHttpServer
我查询了Lombok的ISSUE,发现如下讨论:
Add jdk9 compiler support
https://github.com/rzwitserloot/lombok/issues/985
并且,进一步测试我发现一个问题。就是,只要我声明了一个module,并且在Maven中声明依赖lombok,即使我没有使用任何lombok注解。都会报如下错误:
Error occurred during initialization of boot layer java.lang.module.FindException: Unable to derive module descriptor for /Users/apple/.m2/repository/org/projectlombok/lombok/1.16.14/lombok-1.16.14.jar Caused by: java.lang.module.InvalidModuleDescriptorException: Provider class lombok.eclipse.handlers.HandleAccessors not in module
官方也有对应issue#1361
work not good with java 9 #1361
https://github.com/rzwitserloot/lombok/issues/1361
Lombok在Java9下,基本算是无法使用了。
补充:发现issue1361是关闭状态。我提交了一个new issue#1470 https://github.com/rzwitserloot/lombok/issues/1470
所有代码开源上传至 GitHub:yummy-code 仓库 · GESP 专题站:GESP WIKI
欢迎加入:C++ GESP/CSP 考级答疑群(688906745) 与 Java/Python交流群(982860385),点击可直接加群。
猜你想读 · 相关文章推荐
Poj1001 求高精度幂
实话说,不是正规解法,只是因为用的Java,利用里里面的API而已。仅供一笑了。 PS:代码是AC过的。
Java JNI Windows64位系统下 使用32位的dll
<p 今天遇到在处理一个多classloader调用本地native方法报错的问题的时候,想要通过调用本地的一个dll进行测试。该dll是在32位环境下编译的。而<a href="http://www.coderli.com"OneCoder</a的调试机器是64位的win7。自然调用会报如下错误:</p <block...
Java面试题 实现单例模式
<p 好久没有更新博客了,<a href="http://www.coderli.com"OneCoder</a没挂,只是儿子出生,忙了一个多月。生活节奏有点小乱。这期间也抽空换了份工作,坚持技术路线不动摇。So,抓紧调整一下状态,继续读书,写码。</p <p 面试题系列,是<a href="http://www.co...
OneCoder (lihongzheshuai)
一个中年人的自留地,记录学习 C++、GESP/NOI、Java、Python 与算法架构的心得体会。本站唯一网址:coderli.com