Gradle找不到Google Protobuf软件包



我正在尝试使用Netty设置Google Protobuf,但是当我开始编译时,Gradle首次下载Google Protobuf(至少在第一次尝试时),但是在编译时,它只是告诉我:

  /src/main/java/GameMoveOuterClass.java:1536: error: package com.google.protobuf.GeneratedMessageV3 does not exist
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable

这是我的build.gradle:

apply plugin: 'java'
apply plugin: 'com.google.protobuf'
repositories {
    mavenCentral()
}
buildscript {
    repositories {
        mavenCentral()
   }
    dependencies {
        classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.0'
    }
}
dependencies {
    compile group: 'io.netty', name: 'netty-all', version: '4.1.5.Final'
    compile group: 'com.google.protobuf', name: 'protobuf-java', version: '2.4.1'
}

jar {
    manifest {
        attributes("Main-Class": 'server.Server',
        "Class-Path": configurations.compile.collect { it.getPath() }.join(' '))
    }
}

如果有人知道怎么了,请让我知道谢谢

您正在使用Protobuf的2.4.1版本,而不是随附GeneratedMessageV3

更新到新版本的Protobuf,其中包括此类,例如3.0.0

dependencies {
    compile group: 'io.netty', name: 'netty-all', version: '4.1.5.Final'
   compile group: 'com.google.protobuf', name: 'protobuf-java', version: '3.0.0'
}

使用Maven Central高级搜索com.google.protobuf.GeneratedMessageV3,似乎该类位于com.google.cloud:google-cloud-nio:xxxcom.trueaccord.scalapb:protobuf-runtime-scala_yyy:zzz中。我猜您需要将其中之一添加到您的类路径中。

我对Gradle不熟悉,但在我看来,您将新的ProtoBuf生成的代码与旧的Protobuf库混合在一起,而这不支持。GeneratedMessageV3类仅最近才添加(我相信3.0左右),因此,新生成的代码无法与不包含它的旧库相链接。

在我的情况下,我的applibrary模块都应添加

implementation 'com.google.protobuf:protobuf-javalite:3.9.1'

即使app也依赖于library

相关内容

最新更新