问题标签 [protoc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
25776 浏览

python - 如何在 Windows 上使用 Python 的协议缓冲区?

我一直在尝试在我的 Python 程序中使用协议缓冲区,但无法让它工作。我正在运行 Windows 8 机器并尝试过 Python 2.7.6 和 Python 3.3。我下载了 Python 的二进制协议缓冲区编译器并使用它myProto_pb2.py从我的myProto.proto文件中生成,但是当我运行我的 Python 程序时出现以下错误:

在“import myProto_pb2”行中,使用来自协议缓冲区 2.5 版的 Python 2.7.6 时出现以下错误:

如何在 Windows 上从 Python 正确安装和运行协议缓冲区?

0 投票
1 回答
1994 浏览

java - Protogen 对比 协议编译器选项

我有一些 .proto 文件用于从 Java、C++ 和 C# 编译类。对于 Java 和 C++,我使用 Protoc 编译器,对于 C#,我使用 Protogen。Java/C++ 类创建的脚本是

对于 C# 类生成我有

两个脚本都引用了 .proto 文件(当然 ;])。我添加了上面的 C# 脚本-p:detectMissing,以生成允许我测试是否指定字段的属性;该选项*Specified为所有字段创建IsRequired = false

我的问题很简单,我想确保 C#、C++ 和 Java 类保持一致,但是对于 C#,我需要使用-p:detectMissingProtogen 选项,使用 Protoc 的等效选项是什么?

谢谢你的时间。

0 投票
1 回答
1753 浏览

cygwin - Windows 中的协议错误

我正在尝试使用maven protoc 插件和我在 Cygwin 中构建的 protoc 可执行文件来编译协议缓冲区代码。我无法从 Cygwin 或 Windows 命令行执行此操作。下面是我在 Windows 中运行它时得到的输出,但从 Cygwin 运行时错误是相同的。我觉得这很奇怪,因为如果问题出在路径转换上,那么我希望其中一个可以工作。可执行文件是用 Cygwin 的 g++ 构建的这一事实是否可能会影响事情?(很明显,有问题的目录确实存在。)

编辑:当我从图片中取出 maven 并手动调用 protoc 时,我得到了同样的错误。

编辑 2:我可以通过使用相对或绝对路径从 Cygwin 手动调用 protoc 来解决此问题(但波浪号扩展不起作用)。使用相对或绝对路径从 Windows 手动调用 protoc 继续给出相同的错误。

0 投票
2 回答
21761 浏览

protocol-buffers - protoc 不生成服务存根文件

我刚开始玩谷歌原型。当我尝试编译 proto-java 示例中存在的 proto 文件时,它不会生成任何 grpc 文件。

proto 文件, https://github.com/grpc/grpc-java/blob/master/examples/src/main/proto/hello_world.proto

终端输出,

rsonkhla@raman-OptiPlex-9020:~/sandbox/grpc-java/examples$ protoc --version libprotoc 3.0.0 rsonkhla@raman-OptiPlex-9020:~/sandbox/grpc-java/examples$ protoc --java_out=test / -I../../grpc-java/examples ../../grpc-java/examples/src/main/proto/hello_world.proto rsonkhla@raman-OptiPlex-9020:~/sandbox/grpc-java /examples$ ls -R test/test/:io

测试/io:grpc

测试/io/grpc:示例

测试/io/grpc/示例:helloworld

test/io/grpc/examples/helloworld: HelloRequest.java
HelloResponse.java HelloWorldProto.java HelloRequestOrBuilder.java HelloResponseOrBuilder.java

有没有其他人遇到过这个问题?

0 投票
1 回答
1945 浏览

android - 未找到 protoc-gen-javanano

我正在尝试在我的 Android 应用程序中使用 Protobuf。为此,我在 gradle.build 文件中添加了以下几行:

问题是我在构建 gradle 时遇到错误。它说:

你能帮我解决这个问题吗?我不知道如何解决它。

先感谢您 !

0 投票
1 回答
1760 浏览

java - 原型生成类的 toString 导致异常

我正在按照 Google 的教程 [ https://developers.google.com/protocol-buffers/docs/javatutorial?hl=en ] 编写一个 Proto 类。

我的原型文件是

我正在编写一个 junit 测试用例来创建Person教程中指定的新对象。
对象已创建但调用它的toString()方法给我一个错误,它应该被子类覆盖。同样的Stacetrace如下

我的junit测试类如下

我在这里错过了一些微不足道的事情吗?

0 投票
1 回答
2574 浏览

java - 为什么在 google protobuf 中缺少 ProtocolStringList 会出错?

我刚刚遇到了一个问题,在ProtocolStringListprotoc 创建的生成代码中,对 a 的引用导致类未找到错误。

在这种情况下,我收到了 Eclipse 错误:

我希望它也可以显示为:

0 投票
2 回答
1331 浏览

hadoop - 即使在我的系统上设置了 protoc 2.5.0,构建 hadoop 仍然失败

在完成先决条件后,我现在正在尝试使用 mvn 构建 hadoop。但是,即使我有正确版本的 protoc,我也会收到此消息。我已经多次尝试重建 protoc 2.5.0,并且每次它的所有测试都会通过并成功构建。不知道为什么会一直这样,求大神帮忙。谢谢。

[错误] 无法在项目 hadoop-common 上执行目标 org.apache.hadoop:hadoop-maven-plugins:3.0.0-SNAPSHOT:protoc (compile-protoc): org.apache.maven.plugin.MojoExecutionException: protoc failure -> [Help 1] [ERROR] [ ERROR] 要查看错误的完整堆栈跟踪,请使用 -e 开关重新运行 Maven。[错误] 使用 -X 开关重新运行 Maven 以启用完整的调试日志记录。[ERROR] [ERROR] 有关错误和可能的解决方案的更多信息,请阅读以下文章: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException [ERROR] [ ERROR] 纠正问题后,您可以使用命令 [ERROR] 恢复构建 mvn <goals> -rf :hadoop-common

TJ@DESKTOP-6940Q5M /cygdrive/e/hdc $ protoc --version libprotoc 2.5.0

感谢我错过了使用 -e 开关在重新运行时上传显示的建议。这里是。

无法在项目 hadoop-common 上执行目标 org.apache.hadoop:hadoop-maven-plugins:3.0.0-SNAPSHOT:protoc (compile-protoc): org.apache.maven.plugin.MojoExecutionException: protoc failure -> [Help 1] org.apache.maven.lifecycle.LifecycleExecutionException: 无法在项目 hadoop-common: org.apache 上执行目标 org.apache.hadoop:hadoop-maven-plugins:3.0.0-SNAPSHOT:protoc (compile-protoc)。 maven.plugin.MojoExecutionException:在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 的 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212) 的协议失败在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 在 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116) 在 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80) 在 org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51) 在 org.apache.maven。 org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307) 的生命周期.internal.LifecycleStarter.execute(LifecycleStarter.java:128) org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193) 的 org .apache.maven.DefaultMaven.execute(DefaultMaven.java:106) 在 org.apache.maven.cli.MavenCli.execute(MavenCli.java:863) 在 org.apache.maven.cli.MavenCli.doMain(MavenCli.java :288) 在 org.apache.maven.cli.MavenCli.main(MavenCli.java:199) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect。NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.codehaus.plexus.classworlds .launcher.Launcher.launchEnhanced(Launcher.java:289) 在 org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) 在 org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher .java:415) 在 org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) 引起:org.apache.maven.plugin.MojoExecutionException: org.apache.maven.plugin.MojoExecutionException: protoc在 org.apache.maven.plugin.DefaultBuildPluginManager 的 org.apache.hadoop.maven.plugin.protoc.ProtocMojo.execute(ProtocMojo.java:105) 失败。executeMojo(DefaultBuildPluginManager.java:134) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207) ... 20 更多原因:org.apache.maven.plugin.MojoExecutionException: protoc failure at org.apache.hadoop.maven.plugin.protoc.ProtocMojo.execute(ProtocMojo.java:102) ... 22 更多

我真的不知道它的问题是什么,因为我是 hadoop 的初学者。请帮忙。

0 投票
1 回答
1481 浏览

dump - 将协议缓冲区文件转储到标准输出以进行调试/调查?

我有一个.proto文件和一个pbf(协议缓冲区文件)。无论如何我可以将 pbf 文件“转储”为某种冗长的人类可读输出格式吗?我只是希望能够查看其中并查看其中的数据。

理想情况下,我正在寻找一个在 linux 上运行的开源 cli 工具,其工作原理如下:

这存在吗?我试过cat data.pbf | protoc --decode_raw了,但我收到了Failed to parse input.很多文件的消息,我非常确信这些文件是有效的。编写一个可以做到这一点的程序会很容易吗?如果是这样,怎么做?

(我是协议缓冲区的新手,如果这是一个愚蠢或无意义的问题,我很抱歉)

0 投票
1 回答
3066 浏览

protocol-buffers - “无法解析输入”来自 Google 协议缓冲区 protoc 命令的“--decode_raw”

我有一个来自OpenStreetMap的google protobuf 文件,特别是我有来自 Geofabrik 的 1.4MB Liechtenstein country extract。该命令说它使用选项“将原始标签/值写入标准输出”。但是我不断收到此错误:protoc--decode_raw

我已经直接从 Google 编译并安装了 protobuf 库,版本 2.6.1 是当前版本。

该文件有效,各种读取 pbf 文件的 OpenStreetMap 工具(osm2pgsqlosmosis)都可以正常读取。

有什么问题?我怎么--decode_raw去上班?难道我做错了什么?