es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Protobuf: usar el mismo nombre de Mensaje con diferentes paquetes

Estoy utilizando protobuf java, con el siguiente archivo .proto.

““
// service1.proto
option java_package = “paquete”;
option java_outer_classname = “Proto1”;
message M {
… // alguna definición
}


y

// service2.proto
option java_package = “paquete”;
option java_outer_classname = “Proto2”;
message M {
… // alguna definición diferente
}
“`

Durante la compilación, se produce un error en service2.proto que dice que “M” ya está definido en service1.proto.

Pero según el paquete y el código generado, deberían ser package.Proto1.M y package.Proto2.M, ¿es esto un conflicto?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, esto es un conflicto porque aunque los nombres totalmente calificados de los mensajes en service1.proto y service2.proto son diferentes (package.Proto1.M y package.Proto2.M), los nombres simples (M) son iguales. Cuando el generador protobuf-java genera el código para estos archivos .proto, creará clases Java con el nombre simple M en el mismo paquete (package), lo cual no está permitido.

    Para evitar este conflicto, puedes cambiar el nombre de uno de los mensajes (M) o utilizar diferentes nombres de paquete para los dos archivos (por ejemplo, package1 y package2).

Comments are closed.