【问题标题】:mvn install produces compilation error for @Getter @Setter properties for Lombok propertiesmvn install 为 Lombok 属性的 @Getter @Setter 属性产生编译错误
【发布时间】:2018-07-13 15:12:59
【问题描述】:

我在测试我的应用程序时遇到了这个问题,mvn 测试不会运行,并且特别是在具有 Lombok 的 @Getter @Setter 注释的属性处产生编译问题。 IDE 中没有突出显示错误,因为 Intelij 插件有效,但不知何故 maven 无法找到 Lombok。我看过与我的问题相似的帖子,但它们都有不同版本的 maven / lombok / maven-compiler。我的版本是 Maven - 3.5 ,Maven 编译器 - 3.7 ,Lombok 1.16.20。

我的带有 lombok 注释的 Java 类

@JsonProperty
@Getter @Setter private String name;


@JsonProperty
@Getter @Setter private String catType;


@JsonProperty
@Getter @Setter private String description;


@JsonProperty
@Getter @Setter private String intType;


@JsonProperty
@Getter @Setter private String numberCode;

当我运行 mvn install 我得到 ​​p>

> [my-path]/my-java.java:[86,29] cannot find symbol
[ERROR]   symbol:   method numberCode()
[ERROR]   location: variable source of type My-java
[my-path]/my-java.java:[86,29] cannot find symbol
[ERROR]   symbol:   method name()
[ERROR]   location: variable source of type My-java
[my-path]/my-java.java:[86,29] cannot find symbol
[ERROR]   symbol:   method catType()
[ERROR]   location: variable source of type My-java
[my-path]/my-java.java:[86,29] cannot find symbol
[ERROR]   symbol:   method description()
[ERROR]   location: variable source of type My-java 

这是我的 Pom.xml(因为这是一个非常冗长的 pom.xml,我只分享了在这个问题的上下文中可能重要的内容)

    <lombok.version>1.18.0</lombok.version>
 <maven-clean-plugin.version>2.6.1</maven-clean-plugin.version>
        <maven-compiler-plugin.version>3.7.0</maven-compiler-plugin.version>
        <maven-eclipse-plugin.version>2.10</maven-eclipse-plugin.version>
        <maven-enforcer-plugin.version>3.0.0-M1</maven-enforcer-plugin.version>
        <maven-resources-plugin.version>3.0.1</maven-resources-plugin.version>
        <maven-surefire-plugin.version>2.18.1</maven-surefire-plugin.version>
          <maven.version>3.0.0</maven.version>
        <java.version>1.8</java.version>
        <scala.version>2.12.1</scala.version>
        <node.version>v8.9.4</node.version>
        <yarn.version>v1.3.2</yarn.version>

  <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok.version}</version>
            <scope>provided</scope>
        </dependency>

【问题讨论】:

  • 请给你的 POM 做广告。
  • 您使用的是什么 IDE?还想知道,lombok 插件是否安装在您的 IDE 中(不仅作为 pom.xml 中的依赖项)。
  • Maven 不提供编译器,它依赖于 javac。提供你的 pom 来分析你的问题。
  • 你还有什么做注解处理的吗?
  • @MahiTejGvp 如果您使用最新版本的 mapstruct,它应该无缝集成,无需手动指定注释处理器路径。

标签: java maven maven-3 lombok


【解决方案1】:

这可能对您有所帮助:https://github.com/rzwitserloot/lombok/issues/1468 检查您是否有任何此类问题:

  1. 在同一个类中定义了两次具有相同签名的方法,或者 同名变量在同一个类中定义了两次

  2. 公共类的名称与它定义的文件的名称不匹配

    通过 gkostalkowicz github

【讨论】:

  • 嘿@Mateusz Byczkowski 我认为这不一样
【解决方案2】:

在看到@DarrenForsythe 的评论后,我从 maven-compiler 的配置中删除了 mapstruct annotationProcessorPaths 它工作得很好。 如果您使用任何其他可能导致冲突的注释处理器

【讨论】:

    【解决方案3】:

    您是否在 pom.xml 文件中添加了项目 lombok 依赖项?

    如果尚未完成,请尝试添加:

     <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.16.20</version>
            </dependency>
    

    看看有没有帮助。

    美好的一天!

    【讨论】:

    • 嘿@dossani 我添加了它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-29
    • 2018-12-20
    相关资源
    最近更新 更多