Grpc 无法解析符号 GreeterGrpc

Posted

技术标签:

【中文标题】Grpc 无法解析符号 GreeterGrpc【英文标题】:Grpc cannot resolve symbol GreeterGrpc 【发布时间】:2017-11-05 20:45:08 【问题描述】:

我正在点击链接https://github.com/grpc/grpc-java/tree/master/examples/src/main/java/io/grpc/examples/helloworld 来尝试让 grpc 正常工作。

这是最终的文件夹结构。

而我的HelloWorldServer.java和https://github.com/grpc/grpc-java/blob/master/examples/src/main/java/io/grpc/examples/helloworld/HelloWorldServer.java一样,只是包名不同。

但 Intellij 告诉它无法解析符号 GreeterGrpc。

有人可以帮我离开这里吗?

【问题讨论】:

【参考方案1】:

注意GreeterGrpc.javagenerated-sources 之下, 但 IntelliJ 不知道它是一个源文件。

我看到target/generated-sources/protobuf/java 被标记为生成源根目录,但target/generated-sources/protobuf/grpc-java 不是。 通常 IntelliJ 会从 pom.xml 中的配置中选择它。 也许你没有在那里正确配置一些东西。 您可以尝试通过右键单击pom.xml 重新导入 Maven 模块, 并选择 Maven,然后选择 Reimportgrpc-java 的图标应该变成带齿轮的蓝色, 像java 在同一目录级别。

如果这不起作用, 那么您可以手动将grpc-java 标记为生成的源根目录: 右键单击它,选择Mark Directory as,然后选择Generated Sources Root

【讨论】:

【参考方案2】:

Protobuf 插件假定 Protobuf 文件 (*.proto) 在 sourceSets 中的组织方式与 Java 源文件相同。 sourceSet 的 Protobuf 文件在单个 protoc 运行中编译,生成的文件将添加到该 sourceSet () 的 Java 编译运行的输入中。

sourceSets 
    main 
        java 
            srcDirs 'build/generated/source/proto/main/grpc'
            srcDirs 'build/generated/source/proto/main/java'
        
    

感谢@https://medium.com/@DivyaJaisawal/generate-java-code-from-proto-file-using-gradle-1fb9fe64e046

【讨论】:

以上是关于Grpc 无法解析符号 GreeterGrpc的主要内容,如果未能解决你的问题,请参考以下文章

未解析的外部符号 - GRPC

无法解析的外部符号 C++

无法解析的外部符号

ACE编程,无法解析外部符号

error LNK2001: 无法解析的外部符号

error LNK2019: 无法解析的外部符号