2016-11-02 3 views
2

Я работаю с двумя наборами Protobuf привязок, A и B.Совместимость между Protobuf 2.3.0 и 2.6.0

сгенерирован с protoc версии 2.3.0 и B сгенерирован с версия протокола 2.6.0. В моем приложении, которое использует оба вышеизложенного, я использую версию библиотеки protobuf-java версии 2.6.0.

С этой установкой я получаю следующий вид ошибки при взаимодействии с Protobuf привязками:

java.lang.RuntimeException: Generated message class "A$Builder" missing method "getAMessageBuilder" 

Есть много сообщений и вопросов о совместимости между Protobuf схемами, но как насчет версии библиотеки? Существуют ли какие-либо гарантии между версиями protobuf?

ответ

2

Protobuf для Java поддерживает запуск старого сгенерированного кода с использованием более новой библиотеки времени выполнения, а также смешение сгенерированного кода из разных версий компилятора. Однако эта поддержка существует только начиная с версии 3.0 (см. Запись журнала изменений here). Поэтому в вашем случае, вероятно, лучше всего обновить до 3.0 (или выше), если это возможно, и восстановить код с помощью 3.0 protoc, но после этого одноразового действия вам больше не нужно будет беспокоиться о восстановлении вашего кода при обновлении версия protobuf.

Смежные вопросы