小编Tom*_*son的帖子

使用 bazel 时,如何让 protobuf 方法在 intellij 中解析?

我遇到了一个问题,我有一个使用 protobuf 并使用 bazel 构建的工作 java 程序,但是 intellij 无法识别 toByteArray 方法。我在本地机器上分叉了https://github.com/cgrushko/proto_library,将工作区导入 intellij 并构建。然后我添加了以下java主类:

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);
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

以及以下 bazel 构建规则

java_binary(
    name = "Main",
    main_class = "src.Main",
    srcs = ["Main.java"],
    deps = [":person_java_proto"]
)
Run Code Online (Sandbox Code Playgroud)

程序构建并正常运行,但在 intellij 中 toByteArray() 是红色的,intellij 说它无法解析该方法。

我怀疑问题是生成的 Person 扩展了 com.google.protobuf.GeneratedMessageV3 但 Intellij 不知道 GeneratedMessageV3 并且它扩展了一个类, AbstractMessageLite ,它定义了 toByteArray 方法。

任何人都知道如何修复 …

bazel

5
推荐指数
1
解决办法
1132
查看次数

标签 统计

bazel ×1