我有一个文件xxx.proto
。我下载了protobuf编译器并安装了它。然后我执行了这个命令
protoc --java_out=./ xxx.proto
然后它生成了我的xxx.java文件
现在我想将这个文件编译成一个类文件,以便在Scala中使用。
javac xxx.java
这给了我以下错误
xxx.java:7: package com.google.protobuf does not exist
com.google.protobuf.ExtensionRegistry registry) {
^
xxx.java:12450: package com.google.protobuf.Descriptors does not exist
private static com.google.protobuf.Descriptors.Descriptor
^
xxx.java:12453: package com.google.protobuf.GeneratedMessage does not exist
com.google.protobuf.GeneratedMessage.FieldAccessorTable
...
...
...
100 errors
现在我猜测,它没有这个包。
所以我把com.google.protobuf包的类文件复制到与xxx.java相同的文件夹中。注意 - 我没有编译这个包。我从另一个扩展中下载了jar文件。然后我解压缩了它们。现在我的当前路径,即xxx.java所在的路径,有protobuf库的com/google/protobuf/*.class。
我再次发出javac命令。
这一次我得到了不同的错误信息 -
xxx.java:10: cannot find symbol
symbol : class MessageOrBuilder
location: package com.google.protobuf
extends com.google.protobuf.MessageOrBuilder {
^
xxx.java:215: cannot find symbol
symbol : class MessageOrBuilder
location: package com.google.protobuf
extends com.google.protobuf.MessageOrBuilder {
^
xxx.java:608: cannot find symbol
symbol : class MessageOrBuilder
location: package com.google.protobuf
extends com.google.protobuf.MessageOrBuilder {
^
xxx.java:1017: cannot find symbol
symbol : class MessageOrBuilder
location: package com.google.protobuf
extends com.google.protobuf.MessageOrBuilder {
..... 100 errors
我甚至尝试编译了与Google protobufs一起提供的源文件。生成的Java类产生了相同的错误。
有任何想法该怎么办吗? 答案 好的,谢谢大家。
主要问题在于来自Google的协议缓冲区编译器包默认情况下不创建Java库。我认为它会创建并安装它。实际上,如果您正在运行Maven,它确实会这样做。但是我没有Maven。
因此,我编译了
/java/src
中的代码并使用了jar。