2015-02-23 4 views
0

Я получаю ниже ошибку при попытке создать объект newBuilder() для данного класса protobuf. Имеет protobuf-java-2.4.1.jar в пути к классам.VerifyError using protobuf 2.4.1

То же самое работает на стороне сервера, но сбой на клиенте.

 
java.lang.VerifyError: Bad return type 
Exception Details: 
    Location: 
    packagename.QuerySpecProtos$QuerySpec$Builder.clone()Lcom/google/protobuf/AbstractMessageLite$Builder; @4: areturn 
    Reason: 
    Type 'packagename.QuerySpecProtos$QuerySpec$Builder' (current frame, stack[0]) is not assignable to 'com/google/protobuf/AbstractMessageLite$Builder' (from method signature) 
    Current Frame: 
    bci: @4 
    flags: { } 
    locals: { 'packagename.QuerySpecProtos$QuerySpec$Builder' } 
    stack: { 'packagename.QuerySpecProtos$QuerySpec$Builder' } 
    Bytecode: 
    0000000: 2ab6 0062 b0       
+1

Какая версия protobufs использовалась при компиляции класса? При компиляции и запуске вам нужно использовать ту же самую jar-версию, и вам также нужно использовать ту же версию 'protoc', чтобы она соответствовала банку. –

+0

@ Kenton Спасибо за информацию. Использул разную версию фляги во время выполнения. – Amareswar

+0

Итак, тогда я отвечу на свой комментарий. :) –

ответ

1

Похоже, что несоответствие версии. Вы должны быть уверены, что оба:

  1. Вы используете ту же самую версию jar при компиляции и запуске.
  2. Вы используете ту же версию protoc, чтобы соответствовать банке.
Смежные вопросы