2017-10-03 1 views
2

私はprotobufを使用し、bazelを使用してビルドされていますが、intellijがtoByteArrayメソッドを認識しないjavaプログラムを使用しているところに問題があります。 ローカルマシンでhttps://github.com/cgrushko/proto_libraryをフォークし、ワークスペースをintellijにインポートしてビルドしました。bazelを使用しているときにintellijで解決するprotobufメソッドを取得するにはどうすればよいですか?

package src; 

import demo.PersonOuterClass; 

public class Main { 
    public static void main(String argv[]) { 
    byte[] ba = PersonOuterClass.Person.newBuilder().setEmail("dwwd").build().toByteArray(); 
    for (byte b : ba) { 
     System.out.println(b); 
    } 
    } 
} 

と、次のbazelのビルドルール

java_binary(
    name = "Main", 
    main_class = "src.Main", 
    srcs = ["Main.java"], 
    deps = [":person_java_proto"] 
) 

プログラムを構築し、適切に実行されますが、IntelliJのtoByteArrayで()赤で、IntelliJのは、それができることを言う:私は、次のJavaメインクラス追加しましたメソッドを解決しません。

生成されたPersonがcom.google.protobuf.GeneratedMessageV3を拡張しているが、intellijがGeneratedMessageV3について認識しておらず、toByteArrayメソッドを定義するAbstractMessageLiteクラスを拡張していると思われます。

toByteArrayがideによって解決されるように、誰でもbazelビルドターゲットまたはintellijを修正する方法を知っていますか?

ありがとう、

トム

答えて

0

ソースルートとしてbazel-/external/java/com_google_protobuf_java/core/src/main/javaとマークしてこの問題を解決しました。 (右クリック - > Mark Directory as - > Sources Root)

+0

ソースフォルダはbazelと同期するたびに再選択する必要があるため、この方法はあまり役に立ちません。 –

関連する問題