使用协议缓冲编译器从proto文件生成java文件 - Google API

时间:2015-07-03 21:33:18

标签: linux unix web-applications compiler-errors protocol-buffers

在解压缩protobuf后,我在C:\Sooraj\Playdrone\android-checkin-master\src\main\protobuf\checkin.proto中有原始文件,java相关源代码位于C:\Sooraj\Playdrone\protobuf-2.6.1\java\src

当我尝试执行时:

protoc -I=C:/Sooraj/Playdrone/android-checkin-master /android-checkin-master/src/main/java/com/android/checkin --java_out=C:/Sooraj/P laydrone/dest C:/Sooraj/Playdrone/android-checkin-master/android-checkin-master /src/main/protobuf/checkin.proto"

我收到以下错误:

C:/Sooraj/Playdrone/android-checkin-master/android-checkin-master/src/main/proto buf/checkin.proto: File does not reside within any path specified using --proto_ path (or -I). You must specify a --proto_path which encompasses this file. Not e that the proto_path must be an exact prefix of the .proto file names -- protoc is too dumb to figure out when two paths (e.g. absolute and relative) are equiv alent (it's harder than you think).

所以请帮忙。我应该如何针对我的项目执行protoc -I=$SRC_DIR --java_out=$DST_DIR $SRC_DIR/addressbook.proto命令。我有原始文件,在谷歌开发者网站$SRC_DIR意思是“你的应用程序源代码所在的位置”

我想我把所有事情都弄好了。请问任何人可以告诉如何执行protoc从proto文件生成java文件?

1 个答案:

答案 0 :(得分:0)

你的-I标志是这样的:

-I=C:/Sooraj/Playdrone/android-checkin-master/android-checkin-master/src/main/java/com/android/checkin

-I的目的是指定找到.proto个文件的位置(以解决文件中出现的import个语句)。标志 not 用于指定Java文件的位置;这就是--java_out的用途。

但是您的.proto文件是这样的:

C:/Sooraj/Playdrone/android-checkin-master/android-checkin-master/src/main/protobuf/checkin.proto

这不在您使用-I指定的目录中。这就是错误试图告诉你的。

您可能希望将-I标记更改为:

-I=C:/Sooraj/Playdrone/android-checkin-master/android-checkin-master/src/main/protobuf