在解压缩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文件?
答案 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