作为一名实习生,我的任务是开发 MyTracks 应用程序。我目前正在处理我找到的源代码here..当我将代码导入到android studio时,我在Sensor.java上遇到了3个错误——一个包含此语句的类
//由protocol buffer编译器生成。请勿编辑! // 来源:proto/sensor.proto
这些是 ff 错误:
错误:Builder 类中的方法 parseUnknownField 无法应用于给定类型; 必需:CodedInputStream、CodedOutputStream、ExtensionRegistryLite、int 找到:CodedInputStream、ExtensionRegistryLite、int 原因:实际参数列表和正式参数列表的长度不同 其中 MessageType、BuilderType 是类型变量: MessageType 扩展了类 Builder 中声明的GenerateMessageLite BuilderType 扩展了 Builder 类中声明的 Builder
错误:Builder 类中的方法 parseUnknownField 无法应用于给定类型; 必需:CodedInputStream、CodedOutputStream、ExtensionRegistryLite、int 找到:CodedInputStream、ExtensionRegistryLite、int 原因:实际参数列表和正式参数列表的长度不同 其中 MessageType、BuilderType 是类型变量: MessageType 扩展了类 Builder 中声明的GenerateMessageLite BuilderType 扩展了 Builder 类中声明的 Builder
错误:任务“:myTracksLib:compileReleaseJavaWithJavac”执行失败。
编译失败;有关详细信息,请参阅编译器错误输出。
我希望你们能帮我解决这个问题,因为我迫切需要解决这个问题。感谢您提供的任何帮助。
很可能,生成
protoc
的 Sensor.java
(protobuf 代码生成器工具)版本与您尝试编译的 libprotobuf.jar
版本不同。这两个东西必须是完全相同的版本。您需要使用与您的 Sensor.java
匹配的 protoc
版本重新生成 libprotobuf.jar
,或者需要找到与生成 libprotobuf.jar
的 protoc
相匹配的 Sensor.java
版本。
只需使用这个版本,它对我有用:
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>3.21.7</version>
</dependency>