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

时间:2017-11-23 16:59:00

标签: java-9 lombok 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) 

但我找到了解决方案如何解决它。 我添加了lombok.config个文件。

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

Error:(10, 26) java: variable title not initialized in the default constructor

项目示例:

我们有实体Store

@AllArgsConstructor
@Getter
public class Story {
    private final String title;
}

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

module javanine {
    requires lombok;
}

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

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

config.stopBubbling = true

在我称之为代码的某处:

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

3 个答案:

答案 0 :(得分:3)

我已经完成了修复lombok-with-JDK9问题的工作,特别是当你实际模块化你的代码时(而不是仅使用JDK9中的javac编译java8样式代码已经工作了一段时间)。

你可以在https://projectlombok.org/download-edge旋转时给出最新的边缘释放吗?谢谢!

答案 1 :(得分:1)

只需按照以下步骤配置模块:

module moduleName {
    requires static lombok;
}

答案 2 :(得分:0)

您可以在提供的范围内包括依赖项以启用构建,而无需将工件附加到库

   <dependency>
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct-processor</artifactId>
            <version>1.3.0.Final</version>
        </dependency>