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>