Java 打印/访问协议缓冲区时出现空指针异常

Java 打印/访问协议缓冲区时出现空指针异常,java,nullpointerexception,protocol-buffers,Java,Nullpointerexception,Protocol Buffers,在尝试打印协议缓冲区时,我得到以下NullPointerException: Exception in thread "main" java.lang.NullPointerException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

在尝试打印协议缓冲区时,我得到以下NullPointerException:

Exception in thread "main" java.lang.NullPointerException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.google.protobuf.GeneratedMessage.invokeOrDie(GeneratedMessage.java:895)
    at com.google.protobuf.GeneratedMessage.access$1400(GeneratedMessage.java:55)
    at com.google.protobuf.GeneratedMessage$FieldAccessorTable$SingularEnumFieldAccessor.get(GeneratedMessage.java:1145)
    at com.google.protobuf.GeneratedMessage.getField(GeneratedMessage.java:127)
    at com.google.protobuf.GeneratedMessage.getAllFieldsMutable(GeneratedMessage.java:84)
    at com.google.protobuf.GeneratedMessage.getAllFields(GeneratedMessage.java:119)
    at com.google.protobuf.TextFormat.print(TextFormat.java:109)
    at com.google.protobuf.TextFormat.print(TextFormat.java:64)
    at com.google.protobuf.TextFormat.printToString(TextFormat.java:81)
    at com.google.protobuf.AbstractMessage.toString(AbstractMessage.java:82)
    at java.lang.String.valueOf(String.java:2826)
    at java.io.PrintStream.println(PrintStream.java:771)
我所做的只是打印协议缓冲区,它实际上是:

NameOfProtocolBuffer.Builder a = NameOfProtocolBuffer.newBuilder();
// Set some fields....
NameOfProtocolBuffer b = a.build();
System.out.println(b); // etc.
协议缓冲区的所有字段可选或重复


谢谢你的帮助

异常似乎是从“NameOfProtocolBuffer”实例b的toString方法引发的。尝试在该方法的开始处放置断点。还要检查NameOfProtocolBuffer.newBuilder和a.build的返回值是否为null,我试过了。没有什么是空的。另外,如果构建返回空值,那么它不会给我那么长的堆栈跟踪,也不会说异常是在第一级引发的……您是否已经进入AbstractMessage.java第82行了?