我的 IntelliJ 14 和 Lombok 注释“@Builder”有问题。
我有一些类(class):
@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: cannot find symbol symbol : class TransactionFilterBuilder location: class 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 包含在类路径中
- Compiler -> Annotation Processors 设置为“Enable annotation processing”
在其他情况下,我的 lombok 插件工作正常。同样在 Eclipse 下,此示例也会编译。
但是当我使用 IDEA 时,“@Builder”失败了。
我是我团队中唯一使用 IntelliJ 的人,我不想回到 Eclipse :(。
有人遇到过这个问题吗?
有人可以帮助我吗?
最佳答案
我试着用一些不同的设置来重现:
- Java 8
- Lombok 版本 1.16.2
- Lombok 插件 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'
}
关于java - IntelliJ 14 + Lombok 插件 + @Builder = 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29165157/