protoc generated JAVA classes have always errors in GeneratedMessageLite and GeneratedMessageV3

139 views
Skip to first unread message

Markus Keggel

unread,
Oct 4, 2022, 5:40:21 PM10/4/22
to Protocol Buffers
Dear List,

I desperately try to generate JAVA classes for Protocol buffers. I tried protobuf-21.7, protobuf-21.6 and the latest protobuf-main but there are always two classes that are faulty:

com.google.protobuf.GeneratedMessageLite

Line 1307:       if (instance.extensions != FieldSet.emptySet()) {

Incompatible operand types FieldSet<GeneratedMessageLite.ExtensionDescriptor> and FieldSet<FieldSet.FieldDescriptorLite<FieldSet.FieldDescriptorLite<T>>>    

and class com.google.protobuf.GeneratedMessageV3

Line 1679: ? (FieldSet<FieldDescriptor>) FieldSet.emptySet()

Cannot cast from FieldSet<FieldSet.FieldDescriptorLite<FieldSet.FieldDescriptorLite<T>>> to FieldSet<Descriptors.FieldDescriptor>

Is there anyone who can solve this? I am unable to fix this. 

Thank you very much for your help,

Markus

Derek Perez

unread,
Oct 4, 2022, 5:45:39 PM10/4/22
to Protocol Buffers
Do you have the ability to setup a simple reproducing github project so we can try and replicate the issue here?

Markus Keggel

unread,
Oct 5, 2022, 7:58:06 AM10/5/22
to Derek Perez, Protocol Buffers
I added a Repo here:


Thank you for looking into it. 

Markus

--
You received this message because you are subscribed to a topic in the Google Groups "Protocol Buffers" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/protobuf/eq8MrtH9l1c/unsubscribe.
To unsubscribe from this group and all its topics, send an email to protobuf+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/protobuf/b4959d63-ef7e-405e-ba67-16b1f1d7a20cn%40googlegroups.com.

Derek Perez

unread,
Oct 5, 2022, 1:41:40 PM10/5/22
to Markus Keggel, Protocol Buffers
OK I think a few things seem wrong here:

1. I'm not sure why you have the protobuf runtime source code in your project, I'd suggest not doing that and referencing it as a jar through maven.

2. The jar you referenced has a pom that is doing that and I suspect you're confusing the classloader because that is using version 3.16.1 https://repo1.maven.org/maven2/org/mobilitydata/gtfs-realtime-bindings/0.0.8/gtfs-realtime-bindings-0.0.8.pom

3. I'd look into generating your proto files JIT using a maven plugin like so: https://www.xolstice.org/protobuf-maven-plugin/

Hope that helps!

- D
Reply all
Reply to author
Forward
0 new messages