2017-04-26 2 views
2

私は混在した(Java & Groovy)IntelliJプロジェクトを持っています。私のGroovyクラスは@Builderアノテーションを使用しています。私は、Javaからビルダーにアクセスすることができますが、それは失敗にプロジェクトのビルドプロセス中に失敗した...インテリジェントビルドGroovyとJavaプロジェクトが混在していて、シンボルが見つかりませんでした。

Error:(27, 105) java: cannot find symbol 
symbol: method builder() 
location: class foo.bar.Sample 

を、私はビルダーの使用をコメントアウトした場合、プロジェクトは完全に罰金構築し、私が見ることができますビルダーを結果のクラスファイルに追加します。

問題はビルド順序であり、javacはGroovyコードがコンパイルされる前にJavaコードをコンパイルしようとしていると思います。

これを修正する方法はありますか?

IntelliJのバージョンは、2017年1月2日コミュニティ

*更新*

私は私のプロジェクトについてより詳細になろう...それがこのように設定されている...

ソースルートは以下のとおりです。

Project source roots

のDataObjectグルーヴィークラス:

import groovy.transform.builder.Builder 

@Builder 
class DataObject { 
    String message 
} 

とGroovy-Eclipseのは、バイトコードのバージョン1.8でJavaコンパイラ(グルーヴィー-日食-バッチ2.4.3-01.jar)として設定されている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()); 
    } 
} 

私は次のエラーを得たプロジェクトをコンパイルしようとした場合は...

Build errorは私が同様のエラーを取得する(Javaの:ビルダーのためのsymbelを見つけることができない)私は、Java compilなどのjavacでそれをしようとした場合エル。

Javaクラスからビルダーの使用を削除した場合、プロジェクトは完全にビルドされ、少なくとも私はGroovyクラスに変更がない限り、ビルダーを使用できます。

+0

ビルド方法を示す必要があります。 'javac'の代わりに' groovyc'を考慮してください – Rao

+0

私は正確に何を表示/記述すべきか分かりません。私はプロジェクトのビルド(Ctrl + F9)を使用します。 JavaコンパイラはプロジェクトをビルドするためのJavac(1.8)です。私もGroovy-Eclipseを試しましたが、ジェネリックとラムダストリームと組み合わせて、他のエラーにつながります。 Groovy Compilerでは何も設定されていませんが、Groovy Frameworkがプロジェクトに追加されています。 コンパイラとしてgroovycを設定するにはどうしたらいいですか? Javaコンパイラ画面でそのオプションが表示されない –

+0

このシナリオの通常の修正は、.javaファイルをソースルートの下に置くことです。これはgroovycでビルドされます。 Groovycは.javaファイルのjavacとして動作します。 – cfrick

答えて

2

https://issues.apache.org/jira/browse/GROOVY-3683の影響を受けています。

sdkmanでGroovyをインストールしたとします。

$ sdk use groovy 2.4.9 
Using groovy version 2.4.9 in this shell. 

# This is the error you get using joint compilation 
$ groovyc -j src/main/groovy/* 
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: 
Compile error during compilation with javac. 
/Users/danyjb/Downloads/GroovyTest/src/main/groovy/MainClass.java:4: error: cannot find symbol 
     System.out.println(DataObject.builder().message("HelloWorld!").build().getMessage()); 
            ^
    symbol: method builder() 
    location: class DataObject 
1 error 

あなたが個別にGroovyとJavaのコンパイルする必要があり、問題解決するには、次のIntelliJ IDEAの面では

$ groovyc src/main/groovy/DataObject.groovy -d out/ 
$ javac -cp $GROOVY_HOME/lib/groovy-2.4.9.jar:out/ -d out/ src/main/groovy/MainClass.java 

が、これはあなたが別のモジュールであなたのGroovyのコードを入れてから、依存関係を追加する必要があることを意味しますJavaモジュールをGroovyモジュールに追加します。

関連する問題