【问题标题】:Lombok + javac: cannot find symbolLombok + javac:找不到符号
【发布时间】:2018-12-16 22:12:28
【问题描述】:

我正在尝试开始使用 Lombok。作为官方demodocumentation 状态,应该能够通过以下简单步骤编译带有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_144lombok 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


【解决方案1】:

编译错误的原因是错过导入:

import lombok.Data

感谢发现问题的@SzymonStepniak。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-30
    • 2015-06-23
    • 2016-12-07
    相关资源
    最近更新 更多