-
Notifications
You must be signed in to change notification settings - Fork 69
Description
For example, compiling a "self-service" generated library with ./gradlew check fails:
> Task :proto-google-cloud-retail-v2alpha-java:compileJava
/tmp/google-cloud-retail-v2alpha-java/proto-google-cloud-retail-v2alpha-java/src/main/java/com/google/cloud/retail/v2alpha/LocationName.java:27: error: cannot find symbol
import javax.annotation.Generated;
The javax.annotation package space is really a mess from the perspective of Java 9+ JPMS, and it has caused a lot of trouble to many people with Java 9+.
The right solution for Java 9+ is to drop javax.annotation.Generated and migrate to javax.annotation.processing.Generated. However, doing so will cause Java 8 to fail with the same "cannot find symbol" error. An option would be to completely drop using the annotation. However, the gRPC proto compiler generated files with the annotation, so they are out of our control:
@javax.annotation.processing.Generated(
value = "by gRPC proto compiler",
comments = "Source: google/cloud/retail/v2alpha/product_service.proto")
A workaround for the users hitting this issue is to declare the following dependency, but this isn't really the right solution.
implementation 'javax.annotation:javax.annotation-api:1.3.2'Refs:
google/dagger#880
grpc/grpc-java#3633
vavr-io/vavr#2154