我想生成一个用于小型嵌入式应用程序的protobuf机制。
我从protobuf网站下载了'protoc-1.0M4.jar',并尝试使用java编译,我的'test.proto'文件生成C代码。这是我使用的命令和错误:
命令:
$ java -jar protoc-1.0M4.jar test.proto
例外:
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.lang.NumberFormatException: null
at java.lang.Integer.parseInt(Integer.java:454)
at java.lang.Integer.parseInt(Integer.java:527)
at edu.tum.cs.ccts.protobuf.embedded.EmbeddedCGenerator.getMaximumSerializedSize(EmbeddedCGenerator.java:491)
at edu.tum.cs.ccts.protobuf.embedded.EmbeddedCGenerator.compileHeader(EmbeddedCGenerator.java:307)
at edu.tum.cs.ccts.protobuf.embedded.EmbeddedCGenerator.doGenerate(EmbeddedCGenerator.java:113)
at edu.tum.cs.ccts.protobuf.embedded.Protoc.main(Protoc.java:126)
... 5 more
请有人建议一些指导方针。
答案 0 :(得分:0)
我尝试了网站上提供的以下示例代码,但它确实有效。
//File: phone.proto
//
//Optional Embedded C internal options:
//@max_repeated_length=100
//@max_string_length=32
enum PhoneType {
MOBILE = 0;
HOME = 1;
WORK = 2;
}
message PhoneNumber {
required string number = 1;
required PhoneType type = 2;
}
我可以尝试运行,如果你可以提供你的test.proto