Adi*_*ngh 3 java scala protocol-buffers
我有一个文件xxx.proto.我下载了protobuf编译器并安装了它.然后我发出了这个命令
protoc --java_out=./ xxx.proto
Run Code Online (Sandbox Code Playgroud)
它生成了我的xxx.java
现在我想将这个文件编译成一个可以与Scala一起使用的类文件.
javac xxx.java
Run Code Online (Sandbox Code Playgroud)
这给了我这个错误
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
Run Code Online (Sandbox Code Playgroud)
现在我猜,它没有包.
因此,我将com.google.protobuf包的类文件复制到xxx.java所在的同一文件夹中.注意 - 我没有编译这个包.我从另一个包含jar文件的扩展中下载了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
Run Code Online (Sandbox Code Playgroud)
我甚至试图编译谷歌protobufs附带的源文件.生成的java类给出了相同的错误.
任何想法该怎么办?
回答
好的.感谢大家.
主要问题是来自谷歌的协议缓冲编译器包默认创建java库.我认为它确实安装了它.如果你正在运行Maven,它确实会这样做.但我没有maven
所以我编译了代码/java/src并使用了jar.^
编译时,需要在类路径上使用protobuf lib.所有缺少的包和类都来自protobuf lib.
找到protobuf jar并使用
javac -cp path/to/protobuf.jar xxx.java
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11399 次 |
| 最近记录: |