获取" java.lang.reflect.InvocationTargetException"尝试使用' protoc-1.0M4.jar'时出错

时间:2014-05-27 06:00:56

标签: java protocol-buffers

我想生成一个用于小型嵌入式应用程序的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

请有人建议一些指导方针。

1 个答案:

答案 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