module-info.java не работает с ломбком в Java 9

Я столкнулся с проблемой во время миграции нашего проекта на 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());
}

1 ответ

Просто настройте свой модуль следующим образом:

module moduleName {
    requires static lombok;
}

Я проделал некоторую работу по исправлению проблем с lombok-with-JDK9, особенно когда вы на самом деле модулировали свой код (вместо простой компиляции кода в стиле java8 с помощью javac из JDK9, который работал некоторое время).

Можете ли вы дать последнюю версию на https://projectlombok.org/download-edge? Спасибо!

Вы можете включить зависимость в предоставленную область, чтобы включить сборку, не прикрепляя артефакт к библиотекам.

   <dependency>
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct-processor</artifactId>
            <version>1.3.0.Final</version>
        </dependency>
Другие вопросы по тегам