gpt4 book ai didi

java - 在 java 和 scala 中使用 protobufs 的问题

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:00:29 30 4
gpt4 key购买 nike

我有一个文件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 文件的扩展下载了 jar。所以我提取了它们。现在我当前xxx.java所在的路径有com/google/protobuf/*.class of protobuf库。

我再次发出了 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 的 Protocol Buffer 编译器包默认情况下不会创建 java 库。我认为它确实存在并安装了它。如果您正在运行 Maven,它实际上会起作用。但是我没有maven

所以我编译了/java/src中的代码并使用了jar。 ^

最佳答案

编译时,你的类路径中需要有 protobuf 库。所有丢失的包和类都来自 protobuf 库。

找到protobuf jar并使用

javac -cp path/to/protobuf.jar xxx.java

关于java - 在 java 和 scala 中使用 protobufs 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8265801/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com