Ошибка Protobuf 2.5.0?
мы перешли с google protobuf v. 2.4.1 на v. 2.5.0 (без других изменений).
У меня был отлично работающий клиент-сервер [android <>gae dev server] связь с использованием 2.4.1.
Сейчас с 2.5.0 он сломан.
Без каких-либо изменений в файле .proto, янастроил мой клиент и сервер с новым jar 2.5.0 и с новым исполняемым файлом protoc I 'мы сгенерировали новый исходный файл для клиента и сервера из одного и того же файла прото.
Теперь я получаю эту ошибку на сервере, когда яЯ пытаюсь разобрать сообщение:
VerifyError: class ... overrides final method getUnknownFields.()Lcom/google/protobuf/UnknownFieldSet;
полный стек:
java.lang.VerifyError: class com.mta.pb.ACM$MyRequest overrides final method getUnknownFields.()Lcom/google/protobuf/UnknownFieldSet;
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(IsolatedAppClassLoader.java:213)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:186)
at com.google.appengine.tools.development.agent.runtime.RuntimeHelper.checkRestricted(RuntimeHelper.java:70)
at com.google.appengine.tools.development.agent.runtime.Runtime.checkRestricted(Runtime.java:64)
**at com.mta.server.p.AndroidServletP.doPost(AndroidServletP.java:91)** out64.bin
чем
protoc --decode=MyRequest my.proto < out64.bin > tmp.txt
И это прекрасно разбирает. Таким образом, проблема только в части синтаксического анализа нового protobuf.
3) ямы пытались убрать ReqType из MyRequest, безрезультатно.
Для справки: соответствующее определение protobuf
/**
* Master request object
*/
message MyRequest {
optional RequestContext context = 1;
optional MyReport myReport = 2;
optional CategoryRequest catRequest = 3;
optional GetMessage getMessage = 4;
optional SearchRequest searchRequest = 5;
enum ReqType {
UNDEFINED = 1;
REGISTER = 104;
UPDATE = 123;
GET_PAYLOAD = 100;
SEARCH = 200;
REPEAT_GCM = 623;
REPEAT_PREPARE = 842;
}
optional ReqType reqType = 10;
optional bool repeat = 11;
}
Любые советы будут с благодарностью!