Gradle没有找到Google Protobuf软件包

时间:2016-11-26 16:10:21

标签: java gradle protocol-buffers

我正在尝试使用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(' '))
    }
}

如果有人知道什么是错的,请告诉我 感谢

4 个答案:

答案 0 :(得分:1)

您正在使用2.4.1附带的protobuf 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'
}

答案 1 :(得分:0)

com.google.protobuf.GeneratedMessageV3使用maven central advanced search,似乎该课程位于com.google.cloud:google-cloud-nio:xxxcom.trueaccord.scalapb:protobuf-runtime-scala_yyy:zzz。我猜你是否需要在你的类路径中添加其中一个。

答案 2 :(得分:0)

我不熟悉Gradle,但它看起来像是你将新的protobuf生成的代码与旧的protobuf库混合,这是不受支持的。 GeneratedMessageV3类最近才添加(我相信大约3.0),因此引用该类的新生成代码无法链接到不包含它的旧库。

答案 3 :(得分:0)

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

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

甚至app都依赖于library