我在GRPC中从.proto文件生成存根时遇到了一些麻烦.这是.proto文件的样子
`syntax = "proto3";`
// The greeting service definition.
service Greeter {
// Sends a greeting
rpc SayHello (HelloRequest) returns (HelloReply) {}
}
// The request message containing the user's name.
message HelloRequest {
string name = 1;
}
// The response message containing the greetings
message HelloReply {
string message = 1;
}
Run Code Online (Sandbox Code Playgroud)
该文件确实生成了protocal缓冲区代码,但我没有得到任何服务存根.IE我不能使用阻塞存根.
我试图使用"java_multiple_files = true"修复,但这只是将生成的proto文件拆分为几个单独的proto文件.
我目前正在使用以下命令提示符行生成我的proto文件.
protoc --proto_path= src\proto\protoFile.proto --java_out=src\sourceThings
Run Code Online (Sandbox Code Playgroud)
如果您有任何想法或需要更多信息,请与我们联系.
谢谢!-DJ
我在Java中使用播放框架(使用SBT构建工具),需要消耗protobuf。所以我有xxx.proto文件。我得到了二进制协议编译器,并将其添加到类路径中。所以我看到-
protoc --version libprotoc 3.1.0
我已经使用-编译了xxx.proto文件,
protoc -I=$SRC_DIR --java_out=$DST_DIR $SRC_DIR/xxx.proto因此它已经生成了xxx.java文件。
现在,当我编译此xxx.java文件时(使用sbt构建工具的项目)
[error] /my_project/app/helpers/xxx.java:7: package com.google.protobuf does not exist
[error] com.google.protobuf.ExtensionRegistryLite
[error] /my_project/app/helpers/xxx.java:11: package com.google.protobuf does not exist
[error] com.google.protobuf.ExtensionRegistry
[error] /my_project/app/helpers/xxx.java:6182: package com.google.protobuf.Descriptors does not exist
[error] com.google.protobuf.Descriptors.Descriptor
[error] /my_project/app/helpers/xxx.java:6185: package com.google.protobuf.GeneratedMessageV3 does not exist
[error] com.google.protobuf.GeneratedMessageV3.FieldAccessorTable`
Run Code Online (Sandbox Code Playgroud)
我在安装的库中看到com.google.protobuf jar。
我的xxx.proto如下-
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: xxx.proto
public final class xxx {
private xxx() {}
public static void registerAllExtensions(
com.google.protobuf.ExtensionRegistryLite registry) {
} …Run Code Online (Sandbox Code Playgroud) 我正在尝试为内部专有编程语言编写自定义代码生成器。我想我可以使用protoc插件指南用Java编写生成器。我的main()做这样的事情:
public static void main(String[] args) throws IOException {
CodeGenerator gen = new CodeGenerator();
PluginProtos.CodeGeneratorRequest codeGeneratorRequest = PluginProtos.CodeGeneratorRequest.parseFrom(args[0].getBytes());
codeGeneratorRequest.getProtoFileList().forEach(gen::handleFile);
// get the response and do something with it
//PluginProtos.CodeGeneratorResponse response = PluginProtos.CodeGeneratorResponse.newBuilder().build();
//response.writeTo(System.out);
}
Run Code Online (Sandbox Code Playgroud)
(显然,我才刚刚开始;想在实际编写生成逻辑之前先进行一些简单的工作)
问题是:如何使用--plugin参数调用protoc以使用我的插件以自定义语言生成代码?我试图编写一个shell脚本来做到这一点:
#!/bin/bash
java -cp ./codegen.jar CodeGeneratorMain "$@"
Run Code Online (Sandbox Code Playgroud)
我尝试这样调用协议:protoc --plugin=protoc-gen-code --code_out=./build hello.proto但是,当我运行该协议时,出现以下错误:
线程“主”中的异常java.lang.ArrayIndexOutOfBoundsException:CodeGeneratorMain.main(CodeGeneratorMain.java:12)处为0 --code_out:progen-gen-code:插件失败,状态码为1。
好像它根本没有在stdin上传递CodeGeneratorRequest。我将如何验证?我做错了什么吗?
我一直致力于为项目实施IPC的protobufs.由于某种原因,未设置/序列化设置为0的值.对于上下文,.proto文件包含以下消息:
syntax = "proto3";
enum SetGet {
SET = 0;
GET = 1;
}
message State {
SetGet setget = 1;
double x = 2;
double y = 3;
double depth = 4;
double yaw = 5;
double pitch = 6;
double roll = 7;
}
Run Code Online (Sandbox Code Playgroud)
我使用protoc将文件编译为Python _pb2文件,然后尝试运行以下测试脚本:
import filename_pb2 as pb
state = pb.State()
state.x = 0
state.y = 0
state.depth = 0
state.yaw = 0
state.pitch = 0
state.roll = 0
state.setget = pb.SET
print("State: {}".format(state))
state2 = …Run Code Online (Sandbox Code Playgroud) 我目前正在处理Google Protocol Buffers并需要生成动态消息.我已经定义了如下所示的.proto文件.
message TSInbound
{
string id = 1;
map<string,string> state = 2;
map<string,string> reading =3;
}
Run Code Online (Sandbox Code Playgroud)
AFAIK,我可以使用文件描述符集来创建动态消息.但是,这将涉及使用编译器生成desc文件.我想生成描述符而不编译.proto文件.有没有办法使用自定义.proto文件动态创建消息而不使用protoc?
我已成功导出重新训练的InceptionV3 NN作为TensorFlow元图.我已经成功地将这个protobuf读回到python中,但我正在努力寻找一种方法来导出每个图层的权重和偏差值,我假设它存储在元图形protobuf中,用于重新创建TensorFlow外部的nn.
我的工作流程是这样的:
Retrain final layer for new categories
Export meta graph tf.train.export_meta_graph(filename='model.meta')
Build python pb2.py using Protoc and meta_graph.proto
Load Protobuf:
import meta_graph_pb2
saved = meta_graph_pb2.CollectionDef()
with open('model.meta', 'rb') as f:
saved.ParseFromString(f.read())
Run Code Online (Sandbox Code Playgroud)
从这里我可以查看图表的大多数方面,如节点名称等,但我认为我的经验不足,难以找到访问每个相关层的权重和偏差值的正确方法.
有问题protoc,该行在Windows中不起作用.
我明白了errors:
用这条线
protoc --proto_path=./object_detection/protos --python_out=c:\testmomo ./object_detection/protos/anchor_generator.proto
Run Code Online (Sandbox Code Playgroud)
我收到这个错误
object_detection/protos/grid_anchor_generator.proto: File not found.
object_detection/protos/ssd_anchor_generator.proto: File not found.
anchor_generator.proto: Import "object_detection/protos/grid_anchor_generator.proto" was not found or had errors.
anchor_generator.proto: Import "object_detection/protos/ssd_anchor_generator.proto" was not found or had errors.
anchor_generator.proto:12:5: "GridAnchorGenerator" is not defined.
anchor_generator.proto:13:5: "SsdAnchorGenerator" is not defined.
Run Code Online (Sandbox Code Playgroud)
问题是什么??
我正在使用 protobuf,并从以下 proto 文件生成 JAVA 类。
syntax = "proto3";
enum Greeting {
NONE = 0;
MR = 1;
MRS = 2;
MISS = 3;
}
message Hello {
Greeting greeting = 1;
string name = 2;
}
message Bye {
string name = 1;
}
option java_multiple_files = true;
Run Code Online (Sandbox Code Playgroud)
现在我需要向生成的文件添加一些代码,我发现可以使用自定义插件(https://developers.google.com/protocol-buffers/docs/reference/java- generated#plugins)。我正在尝试用 Java 生成该插件,类似这样。
public class Test {
PluginProtos.CodeGeneratorResponse.getDefaultInstance();
/* Code to get generated files from java_out and use the insertion points */
codeGeneratorResponse.writeTo(System.out);
}
Run Code Online (Sandbox Code Playgroud)
然后我跑
protoc --java_out=./classes --plugin=protoc-gen-demo=my-plugin --demo_out=. …Run Code Online (Sandbox Code Playgroud) 我只是想使用协议缓冲区为 golang 生成代码。但无法使用 protoc 命令生成服务。
syntax = "proto3";
package greet;
option go_package="./greet/greetpb";
service GreetService{}
Run Code Online (Sandbox Code Playgroud)
上面是一个虚拟的原始文件,我正在尝试将其转换为 golang。但无法生成正确的文件,因为在我的系统中它无法将service GreetService{} 线路识别为服务。
我在Windows系统上使用以下版本的protoc:
PS D:\Study\grpc\go-grpc-course> protoc --version
libprotoc 3.17.3
Run Code Online (Sandbox Code Playgroud)
使用以下命令生成代码:
协议 .\greet\greetpb\greet.proto --go_out=.
下面是上面命令生成的go代码:
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.26.0
// protoc v3.17.3
// source: greet/greetpb/greet.proto
package greetpb
import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用以下命令编译 protoc 文件:
protoc/bin/protoc models/research/object_detection/protos/*.proto --python_out=.
Run Code Online (Sandbox Code Playgroud)
但我在 cmd 上得到这个输出
object_detection/protos/flexible_grid_anchor_generator.proto: File not found.
object_detection/protos/grid_anchor_generator.proto: File not found.
object_detection/protos/multiscale_anchor_generator.proto: File not found.
object_detection/protos/ssd_anchor_generator.proto: File not found.
models/research/object_detection/protos/anchor_generator.proto:5:1: Import "object_detection/protos/flexible_grid_anchor_generator.proto" was not found or had errors.
models/research/object_detection/protos/anchor_generator.proto:6:1: Import "object_detection/protos/grid_anchor_generator.proto" was not found or had errors.
models/research/object_detection/protos/anchor_generator.proto:7:1: Import "object_detection/protos/multiscale_anchor_generator.proto" was not found or had errors.
models/research/object_detection/protos/anchor_generator.proto:8:1: Import "object_detection/protos/ssd_anchor_generator.proto" was not found or had errors.
models/research/object_detection/protos/anchor_generator.proto:14:5: "GridAnchorGenerator" is not defined.
models/research/object_detection/protos/anchor_generator.proto:15:5: "SsdAnchorGenerator" is not defined.
models/research/object_detection/protos/anchor_generator.proto:16:5: "MultiscaleAnchorGenerator" is not defined.
models/research/object_detection/protos/anchor_generator.proto:17:5: "FlexibleGridAnchorGenerator" is not …Run Code Online (Sandbox Code Playgroud)