混合使用 protobuf-lite 和 protobuf-java NoSuchMethodError

问题描述

我的模块包含两个依赖项(第 3 方库),其中一个包含 protobuf-lite,另一个包含 protobuf-java。看起来有重复的 AbstractParser 类导致:

java.lang.NoSuchMethodError: 'boolean com.google.protobuf.CodedInputStream.shoulddiscardUnkNownFields()'

我无法更改这些库中的任何内容,我需要在单个测试类中同时使用它们。 我该如何解决这个冲突?

解决方法

尝试将以下依赖项添加到您的项目中:

<dependency>
    <groupId>com.google.protobuf</groupId>
    <artifactId>protobuf-java</artifactId>
    <version>3.8.0</version>
</dependency>
,

protobuf-java 是否包含 protobuf-lite 中的内容。如果是,则排除 lite 版本。如果不是这种情况,您唯一的解决方案是屏蔽第三方库并重新定位来自 lite 版本的类。