【发布时间】:2018-12-16 22:12:28
【问题描述】:
我正在尝试开始使用 Lombok。作为官方demo 和documentation 状态,应该能够通过以下简单步骤编译带有lombok 注释的类:
-
创建一个类并在代码中包含 @Data 注释。应该是这样的
public @Data class Test { private final String name; public static void main(String[] args) { System.out.println(new Test("name")); } } -
使用 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 上运行。
任何想法都会非常有帮助!
【问题讨论】:
-
不应该把
@Data放在public关键字之前吗? -
@SzymonStepniak 是的,我已经尝试过这个选项,但遇到了同样的错误。
-
检查
import lombok.Data是否出现在您的班级中。annotations: [Data]暗示缺少导入。 -
@SzymonStepniak,谢谢。这就是原因。
-
@SzymonStepniak 注解是修饰符,修饰符的顺序不相关,可以写
public @Data或@Data public,随意写。
标签: java-8 annotations javac lombok java-annotations