【问题标题】:IntelliJ 14 + Lombok plugin + @Builder = errorIntelliJ 14 + Lombok 插件 + @Builder = 错误
【发布时间】:2015-05-23 18:45:09
【问题描述】:

我的 IntelliJ 14 和 Lombok 注释“@Builder”有问题。

我有一些课:

@Getter
@Builder
public class TransactionFilter {
      private String name;
      private ProductType product;
      ...

      public static TransactionFilterBuilder defaultBuilder() {
         TransactionFilterBuilder builder = builder();
         builder.product(ProductType.DEFAULT);
         return builder;
      }
}

我正在尝试在另一个类中使用它生成的构建器:

import org.---.TransactionFilter.TransactionFilterBuilder;

public class Foo {
   public void boo() {
      TransactionFilterBuilder filterBuilder;
      ...
   }
}

在这两个类中我都有一些错误

使用 Java 1.6 编译时出现错误:

TransactionFilter java:26: 找不到符号
符号:类 TransactionFilterBuilder
位置:类org.---.TransactionFilterBuilder

我的工具提示还说,在第 26 行我有不兼容的类型:
必需:org.---.TransactionFilter.TransactionFilterBuilder
发现:org.---.TransactionFilter.TransactionFilterBuilder
我猜这第二个错误是插件缺陷,并不重要。

环境:

  • 0.9.1 - Lombok 插件版本
  • 14.0.3 社区 - IntelliJ IDEA 版本
  • Java 1.6.0_31 或 Java 1.6.0_45(项目需要 Java 1.6
  • lombock.jar 包含在类路径中
  • 编译器 -> 注释处理器设置为“启用注释处理”

在其他情况下,我的 lombok 插件可以正常工作。同样在 Eclipse 下,这个例子也可以编译。 但是当我使用 IDEA 时“@Builder”失败了。
我是团队中唯一使用 IntelliJ 的人,我不想回到 Eclipse :(.
有人遇到过这个问题吗?
有人可以帮我吗?

【问题讨论】:

    标签: java intellij-idea lombok


    【解决方案1】:

    我尝试使用不同的设置进行重现:

    • Java 8
    • Lo​​mbok 版本 1.16.2
    • Lo​​mbok 插件 0.9.1
    • Gradle 2.3

    我的代码运行良好。我遇到的唯一问题是 IntelliJ 错误:

    我想这可能是一些插件问题,因为编译没有任何问题。可能会有所帮助,我使用 gradle build task 进行编译。

    @Getter
    @Builder
    public class Foo {
        private String foo;
    
        public static FooBuilder fooBuilder(String foo) {
            FooBuilder builder = builder();
            builder.foo(foo);
            return builder;
        }
    
    }
    
    public class Bar {
        public static void main(String[] args) {
            Foo foo = Foo.fooBuilder("foo").build();
            System.out.println(foo.getFoo());
        }
    }
    
    apply plugin: 'java'
    
    sourceCompatibility = 1.8
    version = '1.0'
    
    repositories {
        mavenCentral()
    }
    
    configurations {
        provided
        compile.extendsFrom provided
    }
    
    dependencies {
        testCompile group: 'junit', name: 'junit', version: '4.11'
        provided 'org.projectlombok:lombok:1.16.2'
    }
    

    【讨论】:

    • 感谢@lusiak 的回答,但它仍然无法正常工作。我认为这两个错误是相关的,但事实并非如此。当我使用 Java 1.7 运行这个示例时,它会编译并且只出现 IntelliJ 错误。但是当我使用 Java 1.6(我们的团队项目中需要它)进行编译时,它会失败 link。最奇怪的是,Eclipse 在 Java 1.6 上编译这段代码没有问题...
    • 您是否使用任何构建系统,例如 Maven 或 Gradle?
    • 是的,我使用 Maven。如果您想查看它,我刚刚在 GitHub 上推送了示例:github.com/Hejwo/LombokPluginApp
    • 我只是克隆了你的仓库,它对我来说工作正常。我没有安装 Java 6,但我将项目语言级别更改为 1.6 并将它也在 pom.xml 中设置,它仍然为我工作。
    • 哇,感谢您的承诺! :-) 不幸的是,它不是......我需要通过 Build->Make 项目(Ctrl + F9 def keymap)中使用的工具来制作项目。为什么这样?在现代项目和这个例子中它也会有所帮助。但是我们的团队项目有点老了。它甚至根本不是一个 Mvn 项目。我们使用配置了 virtualClasspath="C:/example/classes" 的 Tomcat。当我使用“make”或“make project automatically”功能时,它会将类编译为“C:/example/classes”,并且由于 Tomcat 热插拔,我可以立即看到更改而无需重新部署。只有基于制造的解决方案才能提供帮助......该死的,这是一个艰难的......
    【解决方案2】:

    快速更新该问题,前段时间我已将问题报告给插件的官方 GitHub。
    https://github.com/mplushnikov/lombok-intellij-plugin/issues/91
    @Builder for Jdk 1.6 的问题已知且不会修复。

    【讨论】:

      猜你喜欢
      • 2020-07-23
      • 2019-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-02
      • 1970-01-01
      • 1970-01-01
      • 2015-01-13
      相关资源
      最近更新 更多