Ломбок + javac: не удается найти символ

Я пытаюсь начать с Ломбока. В качестве официальной демонстрации и документация утверждает, что можно скомпилировать класс с аннотацией lombok, выполнив следующие простые шаги:

  1. Создайте класс и включите в код аннотацию @Data. Должно быть что-то вроде этого

    public @Data class Test {
        private final String name;
    
        public static void main(String[] args) {
            System.out.println(new Test("name"));
        }
    }
    
  2. Скомпилируйте с помощью javac и вставьте lombok.jar в путь к классам:

    javac -cp lombok.jar Test.java -verbose  
    

К сожалению, при этом возникает ошибка:

Round 1:
        input files: {test.Test}
        annotations: [Data]
        last round: false
Processor lombok.launch.AnnotationProcessorHider$AnnotationProcessor matches [Data] and returns false.
[parsing started lombok.javac.apt.EmptyLombokFileObject@54f47846]
[parsing completed 1ms]
[loading ZipFileIndexFileObject[C:\Program Files\Java\jdk1.8.0_144\lib\ct.sym(META-INF/sym/rt.jar/java/lang/Object.class)]]
[loading ZipFileIndexFileObject[C:\Program Files\Java\jdk1.8.0_144\lib\ct.sym(META-INF/sym/rt.jar/java/lang/String.class)]]
Round 2:
        input files: {}
        annotations: []
        last round: false
Processor lombok.launch.AnnotationProcessorHider$AnnotationProcessor matches [] and returns false.
[loading ZipFileIndexFileObject[C:\Program Files\Java\jdk1.8.0_144\lib\ct.sym(META-INF/sym/rt.jar/java/lang/Object.class)]]
[loading ZipFileIndexFileObject[C:\Program Files\Java\jdk1.8.0_144\lib\ct.sym(META-INF/sym/rt.jar/java/lang/String.class)]]
Round 3:
        input files: {}
        annotations: []
        last round: true
Test.java:3: error: cannot find symbol
public @Data class Test {
        ^
  symbol: class Data
[total 506ms]
1 error

У меня есть javac 1.8.0_144, lombok 1.18.0, и я запускаю его в Windows 8.1 Pro.

Любые идеи были бы очень полезны!


person Pavel Smirnov    schedule 09.07.2018    source источник
comment
Разве @Data не следует помещать перед public ключевым словом?   -  person Szymon Stepniak    schedule 09.07.2018
comment
@SzymonStepniak Да, я уже пробовал этот вариант, но получил ту же ошибку.   -  person Pavel Smirnov    schedule 09.07.2018
comment
Проверьте, присутствует ли import lombok.Data в вашем классе. annotations: [Data] предполагает, что отсутствует импорт.   -  person Szymon Stepniak    schedule 09.07.2018
comment
@SzymonStepniak, спасибо. Это была причина.   -  person Pavel Smirnov    schedule 09.07.2018
comment
Аннотации @SzymonStepniak являются модификаторами, и порядок модификаторов не имеет значения, поэтому вы можете писать public @Data или @Data public, как хотите.   -  person Holger    schedule 09.07.2018


Ответы (1)


Причиной ошибки компиляции был пропущенный импорт:

import lombok.Data

Спасибо @SzymonStepniak, который поймал проблему.

person Pavel Smirnov    schedule 09.07.2018