【问题标题】:protobuf plugins cannot be applied closure warning IntelliJprotobuf 插件无法应用关闭警告 IntelliJ
【发布时间】:2019-08-07 11:01:53
【问题描述】:

我正在学习 protobuf 和 gRPC 示例并从这里使用 gradle 插件

我在屏幕截图上显示以下错误。

直到我在我的依赖项中添加依赖项implementation com.google.protobuf:protobuf-java:3.9.0 之前,我一直在收到以下错误。

Error:(25, 7) java: cannot find symbol
  symbol:   class UnusedPrivateParameter
  location: class MyClass

我的开发信息如下

  • 操作系统:窗口 10 [v1083, b17134.885]
  • JDK:jdk1.8.0_181
  • IntelliJ:#IU-183.5429.30,建于 2019 年 1 月 29 日

【问题讨论】:

    标签: intellij-idea protocol-buffers grpc-java proto


    【解决方案1】:

    您可能需要将生成的源目录添加到您的构建路径:

    idea {
        module {
            sourceDirs += file("src-generated")
            sourceDirs += file("src-generated")
            generatedSourceDirs += file("src-generated")
            generatedSourceDirs += file("src-generated")
        }
    }
    

    来源:https://github.com/yidongnan/grpc-spring-boot-starter/blob/master/examples/grpc-lib/build.gradle

    protobuf 和 grpc-java 生成器都生成的代码仍然需要实际的 protobuf 库(具有相同的 protobuf 版本)在编译和运行时存在。

    编辑:

    再次阅读您的问题后,我发现警告/错误是由 protobuf 内部结构变化引起的。

    grpc-protobuf 版本 1.22.1(最新)依赖于 protobuf 3.7.1。

    至少在protobuf 3.7.1 和 3.8.0 之间存在一些(内部?)API 不兼容。例如。您不能将 protobuf 3.7.1 生成的源与 protobuf 3.8.0+ jar 一起使用(反之亦然)。

    在您的示例中,您使用 protobuf 3.9.0 生成源,但在您的依赖项中提供 protobuf 3.7.1,因此您会遇到冲突。

    【讨论】:

    • 是的,src 目录中的构建和生成代码都可以正常工作,我的主要问题是插件或 ide 有什么问题导致该警告消失。
    • 对不起,我误解了你的问题。我相应地更新了我的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-07
    • 1970-01-01
    • 1970-01-01
    • 2018-05-02
    • 2012-07-27
    相关资源
    最近更新 更多