module-info.java 不适用于 Java 9 中的 lombok

And*_*rey 5 lombok java-9 java-module module-info

我在将项目迁移到Java 9 时遇到了问题

更新 Java 9 后,我尝试运行项目,但遇到编译器错误:-

Error:(6, 1) java: package javax.annotation is not visible 
(package javax.annotation is declared in module java.xml.ws.annotation, which is not in the module graph) 
Run Code Online (Sandbox Code Playgroud)

但我找到了解决方法。我添加了lombok.config文件。

然后将module-info.java文件添加到项目编译器后再次显示错误

Error:(10, 26) java: variable title not initialized in the default constructor
Run Code Online (Sandbox Code Playgroud)

项目示例:

我们有实体Store

@AllArgsConstructor
@Getter
public class Story {
    private final String title;
}
Run Code Online (Sandbox Code Playgroud)

在 root 的包中,我有module-info.java内容:

module javanine {
    requires lombok;
}
Run Code Online (Sandbox Code Playgroud)

在 root 的项目中,我有 lombok.config文件:

lombok.addJavaxGeneratedAnnotation = false
lombok.anyConstructor.suppressConstructorProperties = true

config.stopBubbling = true
Run Code Online (Sandbox Code Playgroud)

在代码中的某处我称之为:

public static void main(String[] args) {
    Story story = new Story("how as");
    System.out.println(story.getTitle());
}
Run Code Online (Sandbox Code Playgroud)

Eug*_*kov 11

只需按如下方式配置您的模块:

module moduleName {
    requires static lombok;
}

Run Code Online (Sandbox Code Playgroud)


rzw*_*oot 4

我已经做了一些修复 lombok-with-JDK9 问题的工作,特别是当您实际模块化代码时(与仅使用 JDK9 中的 javac 编译 java8 样式代码相比,该代码已经工作了一段时间)。

您可以在https://projectlombok.org/download-edge上试用最新的 Edge 版本吗?谢谢!

  • 现在当我指示需要 lombok 时;在 modul-info.java 文件中,代码已编译,但我收到下一条:“启动层 java.lang.module.ResolutionException 初始化期间发生错误:模块 lombok 未读取导出 org.mapstruct.ap 的模块。斯皮”。在maven编译期间,它发誓“无法在项目上执行目标org.apache.maven.plugins:maven-compiler-plugin:3.3:compile(默认编译):编译失败” (2认同)