OneCoder Avatar
OneCodercoderli.com · 937 篇博文
{ } Java

Java 服务端架构

Spring、Netty、日志框架与工程化实战

🎨 视觉封面

Lombok与Java9兼容性问题

📅 2017-09-23·✍️ onecoder·计算中...·⏱️ 4 分钟
#Java#Lombok

很久没更新博客,本想写篇关于Java9 集合工厂函数的博客,却没想到阴差阳错先遇到Lombok与Java9的兼容性问题。

我在一个试验用的工程里,想做一些关于Java9新特性的试验,该工程原本是依赖lombok的。结果,编译时,原有的使用**@Slf4j**注解的的类报编译错误。

Error:(18, 1) java: 程序包 javax.annotation 不可见 (程序包 javax.annotation 已在模块 java.xml.ws.annotation 中声明, 但该模块不在模块图中)

这首先就证明了,Java9对来老项目是不能轻易升级的。有很多的代码、依赖库需要更新、重写。

我尝试增加一个module-info.java根据提示,require相应的module试图解决该问题。

TEXT
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

💡 OneCoder 资源指引

所有代码开源上传至 GitHub:yummy-code 仓库 · GESP 专题站:GESP WIKI

🤝 技术交流与答疑

欢迎加入:C++ GESP/CSP 考级答疑群(688906745)Java/Python交流群(982860385),点击可直接加群。

📚

猜你想读 · 相关文章推荐

OneCoder

OneCoder (lihongzheshuai)

一个中年人的自留地,记录学习 C++、GESP/NOI、Java、Python 与算法架构的心得体会。本站唯一网址:coderli.com

💬 读者留言与交流

0 条讨论
✨ 支持 Markdown 语法格式
还没有留言,快来成为第一个讨论者吧!