【发布时间】:2017-04-26 09:42:48
【问题描述】:
我有一个混合的(Java 和 Groovy)IntelliJ 项目。我的 Groovy 类正在使用 @Builder 注释。我可以从 Java 访问构建器,但是在项目的构建过程中它失败了......
Error:(27, 105) java: cannot find symbol
symbol: method builder()
location: class foo.bar.Sample
如果我注释掉构建器的使用,项目构建得非常好,我可以在生成的类文件中看到构建器。
我认为问题在于构建顺序,即 javac 尝试在编译 Groovy 代码之前编译我的 Java 代码。
知道如何解决这个问题吗?
IntelliJ 版本是 Community 2017.1.2
* 更新 *
我尽量详细介绍我的项目...它是这样设置的...
源码根是:
DataObject groovy 类:
import groovy.transform.builder.Builder
@Builder
class DataObject {
String message
}
还有 MainClass...
public class MainClass {
public static void main(String... args) throws Exception {
System.out.println(DataObject.builder().message("HelloWorld!").build().getMessage());
DataObject dataObject = new DataObject();
dataObject.setMessage("HelloWorld!");
System.out.println(dataObject.getMessage());
}
}
Groovy-Eclipse 在字节码版本 1.8 中设置为 Java Compiler (groovy-eclipse-batch-2.4.3-01.jar)
如果我尝试使用 javac 作为 Java 编译器,我会收到类似的错误(java:cannot find symbel for the builder)。
如果我从 Java 类中删除构建器的使用,项目将完美构建并且我能够使用构建器,至少只要我对 groovy 类没有任何更改。
【问题讨论】:
-
你需要展示你是如何构建它的。考虑
groovyc而不是javac -
我不确定要准确显示/描述什么。我使用构建项目 (Ctrl+F9)。 Java 编译器是 Javac (1.8) 来构建项目。我也尝试过 Groovy-Eclipse,但它会导致其他错误(结合泛型和 lambda 流)。 Groovy 编译器没有设置任何内容,但将 Groovy 框架添加到项目中。如何将 groovyc 设置为编译器?我在 Java 编译器屏幕上没有看到该选项
-
这种情况的通常修复方法是将您的 .java 文件放在使用 groovyc 构建的源根目录下。 Groovyc 仅用作 .java 文件的 javac。
-
实际上我有两个单独的 src 文件夹... src/main/java 和 src/main/groovy 。你的意思是我应该将我的 java 文件移动到 groovy 根目录?有没有办法禁用 javac 而只使用 groovyc?
-
您使用什么构建系统?您如何配置项目根目录?请分享Minimal, Complete, and Verifiable example。
标签: java intellij-idea groovy