Open danielesegato opened 8 months ago
@danielesegato could you please try and confirm that this issue persists with the latest version of protobuf (3.25.2)
Hello ! I have the exact same problem (I'm on 3.25.3, also tried 4.26.0)
Could you resolve the issue?
@buchgr This is still happening, just to answer your question. Stumbled upon this bug because of the same error @danielesegato is seeing above, and I was also able to reproduce their issue locally (with updated dependencies).
There is a workaround, however - I got my project + the one above to build by changing the java_package
value to something else in the problematic proto. I guess there's some kind of collision happening?
Edit: I'm coming at this from the Android side, but renaming one of the proto files to something like name_2.proto
fixes this issue (not the original one, but the similar problem I'm having). I can upload some screenshots/code examples, but in my case I'm seeing this empty thing (and this causes the write issue):
public final class Power {
private Power() {}
public static void registerAllExtensions(
com.google.protobuf.ExtensionRegistryLite registry) {
}
static {
}
// @@protoc_insertion_point(outer_class_scope)
}
@buchgr sorry I didn't answer your question before. As you can see from others comments the problem is still there.
I'm also facing the same issue in my project.
Environment: Version: 4.28.2 Kotlin: 2.0.20 Gradle: 8.10 Gradle Proto Plugin: 0.9.4
I renamed the messages to have different names, and that resolved the issue on my end.
It seems like this problem specifically affects Kotlin part of gen.
What version of protobuf and what language are you using? Version: 3.21.11 Language: Java 1.8.0 / Kotlin 1.9.20 gradle 8.0 gradle proto plugin version 0.9.1
What operating system (Linux, Windows, ...) and version? does not matter but i'm on the last MacOS with ARM processor.
What runtime / compiler are you using (e.g., python version or gcc version) JDK 17
What did you do?
Adding kotlin lite to a project where I only had java lite started to produce build error "Tried to write the same file twice" with the file name
Errors like: mypackage/RespKt.kt: Tried to write the same file twice.
to reproduce you just need two .proto file containing a message with the same name in the same java/kotlin package.
The
foo.proto
fileThe
bar.proto
file:What did you expect to see
When only java lite is configured this compiles and two Java classes are generated: Foo.java and Bar.java
The generated Java class looks like this:
And another
Bar
class is created with its own content.aka: there's a main file for each, with a parent class containing all the messages.
When kotlin is enabled instead, if you do not have duplicates, multiple files are created, one for each message.
FooKt.kt
(empty)RespKt.kt
containing aRespKt
object with Dsl for kotlinBut I do not really "care" about these internals, I just wanted it to build the 2 proto with kotlin DSL.
What did you see instead?
Build fails with
and the stacktrace
The reason is obviously because both
Foo.proto
andBar.proto
cause the generation of aRespKt.kt
file.Anything else we should know about your project / environment
This is the
build.gradle.kts
file I used, if you comment out the kotlin lite setup and dependency it compiles, or if you remove one of the two proto file (or rename Resp to something else) it also compiles even with kotlin enabledThe full stacktrace