Closed bootstraponline closed 6 years ago
It looks like it might be failing to resolve the Guava dependency. @GoogleContainerTools/java-tools
Or a guava buildscript version mismatch?
builderWithExpectedSize
is from version 23.1 onwards.
You can try to force your buildscript version to match jibs and see if that works, although I can't be sure what's causing a non-compatible version to be pulled in
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath "com.google.guava:guava:23.5-jre"
classpath Plugins.KOTLIN
}
}
Thanks. I'll try to force resolve guava and see if that helps.
I added an override to build.gradle
then I ran ./gradlew dependencies
I'm still getting the same error. Is there any other solution I can try?
configurations.all {
resolutionStrategy {
force 'com.google.guava:guava:23.6.1-jre'
}
}
------------------------------------------------------------ Root project ------------------------------------------------------------ annotationProcessor - Annotation processors and their dependencies for source set 'main'. No dependencies apiElements - API elements for main. (n) No dependencies archives - Configuration for archive artifacts. No dependencies compile - Dependencies for source set 'main' (deprecated, use 'implementation ' instead). +--- project :dataseedingapi | +--- io.grpc:grpc-protobuf-lite:1.6.1 | | +--- io.grpc:grpc-core:1.6.1 -> 1.12.0 | | | +--- io.grpc:grpc-context:1.12.0 | | | +--- com.google.code.gson:gson:2.7 -> 2.8.0 | | | +--- com.google.guava:guava:20.0 -> 23.6.1-jre | | | | +--- com.google.code.findbugs:jsr305:1.3.9 -> 3.0.0 | | | | +--- org.checkerframework:checker-compat-qual:2.0.0 | | | | +--- com.google.errorprone:error_prone_annotations:2.1.3 | | | | +--- com.google.j2objc:j2objc-annotations:1.1 | | | | \--- org.codehaus.mojo:animal-sniffer-annotations:1.14 | | | +--- com.google.errorprone:error_prone_annotations:2.1.2 -> 2.1.3 | | | +--- com.google.code.findbugs:jsr305:3.0.0 | | | +--- io.opencensus:opencensus-api:0.11.0 | | | \--- io.opencensus:opencensus-contrib-grpc-metrics:0.11.0 | | | \--- io.opencensus:opencensus-api:0.11.0 | | +--- com.google.protobuf:protobuf-lite:3.0.1 | | \--- com.google.guava:guava:19.0 -> 23.6.1-jre (*) | +--- io.grpc:grpc-stub:1.6.1 | | \--- io.grpc:grpc-core:1.6.1 -> 1.12.0 (*) | +--- org.jetbrains.kotlin:kotlin-stdlib:1.2.40 | | \--- org.jetbrains:annotations:13.0 | +--- com.squareup.retrofit2:retrofit:2.3.0 | | \--- com.squareup.okhttp3:okhttp:3.8.0 -> 3.9.0 | | \--- com.squareup.okio:okio:1.13.0 | +--- com.squareup.retrofit2:converter-gson:2.3.0 | | +--- com.squareup.retrofit2:retrofit:2.3.0 (*) | | \--- com.google.code.gson:gson:2.7 -> 2.8.0 | +--- com.squareup.retrofit2:converter-scalars:2.1.0 | | \--- com.squareup.retrofit2:retrofit:2.1.0 -> 2.3.0 (*) | +--- com.squareup.okhttp3:logging-interceptor:3.8.0 | | \--- com.squareup.okhttp3:okhttp:3.8.0 -> 3.9.0 (*) | +--- com.squareup.okhttp3:okhttp:3.9.0 (*) | +--- com.google.code.gson:gson:2.8.0 | +--- org.jsoup:jsoup:1.10.3 | \--- com.github.javafaker:javafaker:0.14 | +--- org.apache.commons:commons-lang3:3.5 | +--- org.yaml:snakeyaml:1.19 | \--- com.github.mifmif:generex:1.0.2 | \--- dk.brics.automaton:automaton:1.11-8 +--- io.grpc:grpc-netty:1.12.0 | +--- io.grpc:grpc-core:[1.12.0] -> 1.12.0 (*) | +--- io.netty:netty-codec-http2:[4.1.22.Final] -> 4.1.22.Final | | +--- io.netty:netty-codec-http:4.1.22.Final | | | \--- io.netty:netty-codec:4.1.22.Final | | | \--- io.netty:netty-transport:4.1.22.Final | | | +--- io.netty:netty-buffer:4.1.22.Final | | | | \--- io.netty:netty-common:4.1.22.Final | | | \--- io.netty:netty-resolver:4.1.22.Final | | | \--- io.netty:netty-common:4.1.22.Final | | \--- io.netty:netty-handler:4.1.22.Final | | +--- io.netty:netty-buffer:4.1.22.Final (*) | | +--- io.netty:netty-transport:4.1.22.Final (*) | | \--- io.netty:netty-codec:4.1.22.Final (*) | \--- io.netty:netty-handler-proxy:4.1.22.Final | +--- io.netty:netty-transport:4.1.22.Final (*) | +--- io.netty:netty-codec-socks:4.1.22.Final | | \--- io.netty:netty-codec:4.1.22.Final (*) | \--- io.netty:netty-codec-http:4.1.22.Final (*) +--- org.jetbrains.kotlin:kotlin-stdlib:1.2.40 (*) \--- io.netty:netty-tcnative-boringssl-static:2.0.8.Final compileClasspath - Compile classpath for source set 'main'. +--- project :dataseedingapi | +--- io.grpc:grpc-protobuf-lite:1.6.1 | | +--- io.grpc:grpc-core:1.6.1 -> 1.12.0 | | | +--- io.grpc:grpc-context:1.12.0 | | | +--- com.google.code.gson:gson:2.7 | | | +--- com.google.guava:guava:20.0 -> 23.6.1-jre | | | | +--- com.google.code.findbugs:jsr305:1.3.9 -> 3.0.0 | | | | +--- org.checkerframework:checker-compat-qual:2.0.0 | | | | +--- com.google.errorprone:error_prone_annotations:2.1.3 | | | | +--- com.google.j2objc:j2objc-annotations:1.1 | | | | \--- org.codehaus.mojo:animal-sniffer-annotations:1.14 | | | +--- com.google.errorprone:error_prone_annotations:2.1.2 -> 2.1.3 | | | +--- com.google.code.findbugs:jsr305:3.0.0 | | | +--- io.opencensus:opencensus-api:0.11.0 | | | \--- io.opencensus:opencensus-contrib-grpc-metrics:0.11.0 | | | \--- io.opencensus:opencensus-api:0.11.0 | | +--- com.google.protobuf:protobuf-lite:3.0.1 | | \--- com.google.guava:guava:19.0 -> 23.6.1-jre (*) | \--- io.grpc:grpc-stub:1.6.1 | \--- io.grpc:grpc-core:1.6.1 -> 1.12.0 (*) +--- io.grpc:grpc-netty:1.12.0 | +--- io.grpc:grpc-core:[1.12.0] -> 1.12.0 (*) | +--- io.netty:netty-codec-http2:[4.1.22.Final] -> 4.1.22.Final | | +--- io.netty:netty-codec-http:4.1.22.Final | | | \--- io.netty:netty-codec:4.1.22.Final | | | \--- io.netty:netty-transport:4.1.22.Final | | | +--- io.netty:netty-buffer:4.1.22.Final | | | | \--- io.netty:netty-common:4.1.22.Final | | | \--- io.netty:netty-resolver:4.1.22.Final | | | \--- io.netty:netty-common:4.1.22.Final | | \--- io.netty:netty-handler:4.1.22.Final | | +--- io.netty:netty-buffer:4.1.22.Final (*) | | +--- io.netty:netty-transport:4.1.22.Final (*) | | \--- io.netty:netty-codec:4.1.22.Final (*) | \--- io.netty:netty-handler-proxy:4.1.22.Final | +--- io.netty:netty-transport:4.1.22.Final (*) | +--- io.netty:netty-codec-socks:4.1.22.Final | | \--- io.netty:netty-codec:4.1.22.Final (*) | \--- io.netty:netty-codec-http:4.1.22.Final (*) +--- org.jetbrains.kotlin:kotlin-stdlib:1.2.40 | \--- org.jetbrains:annotations:13.0 \--- io.netty:netty-tcnative-boringssl-static:2.0.8.Final compileOnly - Compile only dependencies for source set 'main'. No dependencies default - Configuration for default artifacts. +--- project :dataseedingapi | +--- io.grpc:grpc-protobuf-lite:1.6.1 | | +--- io.grpc:grpc-core:1.6.1 -> 1.12.0 | | | +--- io.grpc:grpc-context:1.12.0 | | | +--- com.google.code.gson:gson:2.7 -> 2.8.0 | | | +--- com.google.guava:guava:20.0 -> 23.6.1-jre | | | | +--- com.google.code.findbugs:jsr305:1.3.9 -> 3.0.0 | | | | +--- org.checkerframework:checker-compat-qual:2.0.0 | | | | +--- com.google.errorprone:error_prone_annotations:2.1.3 | | | | +--- com.google.j2objc:j2objc-annotations:1.1 | | | | \--- org.codehaus.mojo:animal-sniffer-annotations:1.14 | | | +--- com.google.errorprone:error_prone_annotations:2.1.2 -> 2.1.3 | | | +--- com.google.code.findbugs:jsr305:3.0.0 | | | +--- io.opencensus:opencensus-api:0.11.0 | | | \--- io.opencensus:opencensus-contrib-grpc-metrics:0.11.0 | | | \--- io.opencensus:opencensus-api:0.11.0 | | +--- com.google.protobuf:protobuf-lite:3.0.1 | | \--- com.google.guava:guava:19.0 -> 23.6.1-jre (*) | +--- io.grpc:grpc-stub:1.6.1 | | \--- io.grpc:grpc-core:1.6.1 -> 1.12.0 (*) | +--- org.jetbrains.kotlin:kotlin-stdlib:1.2.40 | | \--- org.jetbrains:annotations:13.0 | +--- com.squareup.retrofit2:retrofit:2.3.0 | | \--- com.squareup.okhttp3:okhttp:3.8.0 -> 3.9.0 | | \--- com.squareup.okio:okio:1.13.0 | +--- com.squareup.retrofit2:converter-gson:2.3.0 | | +--- com.squareup.retrofit2:retrofit:2.3.0 (*) | | \--- com.google.code.gson:gson:2.7 -> 2.8.0 | +--- com.squareup.retrofit2:converter-scalars:2.1.0 | | \--- com.squareup.retrofit2:retrofit:2.1.0 -> 2.3.0 (*) | +--- com.squareup.okhttp3:logging-interceptor:3.8.0 | | \--- com.squareup.okhttp3:okhttp:3.8.0 -> 3.9.0 (*) | +--- com.squareup.okhttp3:okhttp:3.9.0 (*) | +--- com.google.code.gson:gson:2.8.0 | +--- org.jsoup:jsoup:1.10.3 | \--- com.github.javafaker:javafaker:0.14 | +--- org.apache.commons:commons-lang3:3.5 | +--- org.yaml:snakeyaml:1.19 | \--- com.github.mifmif:generex:1.0.2 | \--- dk.brics.automaton:automaton:1.11-8 +--- io.grpc:grpc-netty:1.12.0 | +--- io.grpc:grpc-core:[1.12.0] -> 1.12.0 (*) | +--- io.netty:netty-codec-http2:[4.1.22.Final] -> 4.1.22.Final | | +--- io.netty:netty-codec-http:4.1.22.Final | | | \--- io.netty:netty-codec:4.1.22.Final | | | \--- io.netty:netty-transport:4.1.22.Final | | | +--- io.netty:netty-buffer:4.1.22.Final | | | | \--- io.netty:netty-common:4.1.22.Final | | | \--- io.netty:netty-resolver:4.1.22.Final | | | \--- io.netty:netty-common:4.1.22.Final | | \--- io.netty:netty-handler:4.1.22.Final | | +--- io.netty:netty-buffer:4.1.22.Final (*) | | +--- io.netty:netty-transport:4.1.22.Final (*) | | \--- io.netty:netty-codec:4.1.22.Final (*) | \--- io.netty:netty-handler-proxy:4.1.22.Final | +--- io.netty:netty-transport:4.1.22.Final (*) | +--- io.netty:netty-codec-socks:4.1.22.Final | | \--- io.netty:netty-codec:4.1.22.Final (*) | \--- io.netty:netty-codec-http:4.1.22.Final (*) +--- org.jetbrains.kotlin:kotlin-stdlib:1.2.40 (*) \--- io.netty:netty-tcnative-boringssl-static:2.0.8.Final implementation - Implementation only dependencies for source set 'main'. (n) No dependencies kapt \--- org.jetbrains.kotlin:kotlin-annotation-processing-gradle:1.2.40 +--- org.jetbrains.kotlin:kotlin-stdlib:1.2.40 | \--- org.jetbrains:annotations:13.0 \--- org.jetbrains.kotlin:kotlin-compiler-embeddable:1.2.40 +--- org.jetbrains.kotlin:kotlin-stdlib:1.2.40 (*) \--- org.jetbrains.kotlin:kotlin-script-runtime:1.2.40 kaptTest \--- org.jetbrains.kotlin:kotlin-annotation-processing-gradle:1.2.40 +--- org.jetbrains.kotlin:kotlin-stdlib:1.2.40 | \--- org.jetbrains:annotations:13.0 \--- org.jetbrains.kotlin:kotlin-compiler-embeddable:1.2.40 +--- org.jetbrains.kotlin:kotlin-stdlib:1.2.40 (*) \--- org.jetbrains.kotlin:kotlin-script-runtime:1.2.40 runtime - Runtime dependencies for source set 'main' (deprecated, use 'runtimeOnly ' instead). +--- project :dataseedingapi | +--- io.grpc:grpc-protobuf-lite:1.6.1 | | +--- io.grpc:grpc-core:1.6.1 -> 1.12.0 | | | +--- io.grpc:grpc-context:1.12.0 | | | +--- com.google.code.gson:gson:2.7 -> 2.8.0 | | | +--- com.google.guava:guava:20.0 -> 23.6.1-jre | | | | +--- com.google.code.findbugs:jsr305:1.3.9 -> 3.0.0 | | | | +--- org.checkerframework:checker-compat-qual:2.0.0 | | | | +--- com.google.errorprone:error_prone_annotations:2.1.3 | | | | +--- com.google.j2objc:j2objc-annotations:1.1 | | | | \--- org.codehaus.mojo:animal-sniffer-annotations:1.14 | | | +--- com.google.errorprone:error_prone_annotations:2.1.2 -> 2.1.3 | | | +--- com.google.code.findbugs:jsr305:3.0.0 | | | +--- io.opencensus:opencensus-api:0.11.0 | | | \--- io.opencensus:opencensus-contrib-grpc-metrics:0.11.0 | | | \--- io.opencensus:opencensus-api:0.11.0 | | +--- com.google.protobuf:protobuf-lite:3.0.1 | | \--- com.google.guava:guava:19.0 -> 23.6.1-jre (*) | +--- io.grpc:grpc-stub:1.6.1 | | \--- io.grpc:grpc-core:1.6.1 -> 1.12.0 (*) | +--- org.jetbrains.kotlin:kotlin-stdlib:1.2.40 | | \--- org.jetbrains:annotations:13.0 | +--- com.squareup.retrofit2:retrofit:2.3.0 | | \--- com.squareup.okhttp3:okhttp:3.8.0 -> 3.9.0 | | \--- com.squareup.okio:okio:1.13.0 | +--- com.squareup.retrofit2:converter-gson:2.3.0 | | +--- com.squareup.retrofit2:retrofit:2.3.0 (*) | | \--- com.google.code.gson:gson:2.7 -> 2.8.0 | +--- com.squareup.retrofit2:converter-scalars:2.1.0 | | \--- com.squareup.retrofit2:retrofit:2.1.0 -> 2.3.0 (*) | +--- com.squareup.okhttp3:logging-interceptor:3.8.0 | | \--- com.squareup.okhttp3:okhttp:3.8.0 -> 3.9.0 (*) | +--- com.squareup.okhttp3:okhttp:3.9.0 (*) | +--- com.google.code.gson:gson:2.8.0 | +--- org.jsoup:jsoup:1.10.3 | \--- com.github.javafaker:javafaker:0.14 | +--- org.apache.commons:commons-lang3:3.5 | +--- org.yaml:snakeyaml:1.19 | \--- com.github.mifmif:generex:1.0.2 | \--- dk.brics.automaton:automaton:1.11-8 +--- io.grpc:grpc-netty:1.12.0 | +--- io.grpc:grpc-core:[1.12.0] -> 1.12.0 (*) | +--- io.netty:netty-codec-http2:[4.1.22.Final] -> 4.1.22.Final | | +--- io.netty:netty-codec-http:4.1.22.Final | | | \--- io.netty:netty-codec:4.1.22.Final | | | \--- io.netty:netty-transport:4.1.22.Final | | | +--- io.netty:netty-buffer:4.1.22.Final | | | | \--- io.netty:netty-common:4.1.22.Final | | | \--- io.netty:netty-resolver:4.1.22.Final | | | \--- io.netty:netty-common:4.1.22.Final | | \--- io.netty:netty-handler:4.1.22.Final | | +--- io.netty:netty-buffer:4.1.22.Final (*) | | +--- io.netty:netty-transport:4.1.22.Final (*) | | \--- io.netty:netty-codec:4.1.22.Final (*) | \--- io.netty:netty-handler-proxy:4.1.22.Final | +--- io.netty:netty-transport:4.1.22.Final (*) | +--- io.netty:netty-codec-socks:4.1.22.Final | | \--- io.netty:netty-codec:4.1.22.Final (*) | \--- io.netty:netty-codec-http:4.1.22.Final (*) +--- org.jetbrains.kotlin:kotlin-stdlib:1.2.40 (*) \--- io.netty:netty-tcnative-boringssl-static:2.0.8.Final runtimeClasspath - Runtime classpath of source set 'main'. +--- project :dataseedingapi | +--- io.grpc:grpc-protobuf-lite:1.6.1 | | +--- io.grpc:grpc-core:1.6.1 -> 1.12.0 | | | +--- io.grpc:grpc-context:1.12.0 | | | +--- com.google.code.gson:gson:2.7 -> 2.8.0 | | | +--- com.google.guava:guava:20.0 -> 23.6.1-jre | | | | +--- com.google.code.findbugs:jsr305:1.3.9 -> 3.0.0 | | | | +--- org.checkerframework:checker-compat-qual:2.0.0 | | | | +--- com.google.errorprone:error_prone_annotations:2.1.3 | | | | +--- com.google.j2objc:j2objc-annotations:1.1 | | | | \--- org.codehaus.mojo:animal-sniffer-annotations:1.14 | | | +--- com.google.errorprone:error_prone_annotations:2.1.2 -> 2.1.3 | | | +--- com.google.code.findbugs:jsr305:3.0.0 | | | +--- io.opencensus:opencensus-api:0.11.0 | | | \--- io.opencensus:opencensus-contrib-grpc-metrics:0.11.0 | | | \--- io.opencensus:opencensus-api:0.11.0 | | +--- com.google.protobuf:protobuf-lite:3.0.1 | | \--- com.google.guava:guava:19.0 -> 23.6.1-jre (*) | +--- io.grpc:grpc-stub:1.6.1 | | \--- io.grpc:grpc-core:1.6.1 -> 1.12.0 (*) | +--- org.jetbrains.kotlin:kotlin-stdlib:1.2.40 | | \--- org.jetbrains:annotations:13.0 | +--- com.squareup.retrofit2:retrofit:2.3.0 | | \--- com.squareup.okhttp3:okhttp:3.8.0 -> 3.9.0 | | \--- com.squareup.okio:okio:1.13.0 | +--- com.squareup.retrofit2:converter-gson:2.3.0 | | +--- com.squareup.retrofit2:retrofit:2.3.0 (*) | | \--- com.google.code.gson:gson:2.7 -> 2.8.0 | +--- com.squareup.retrofit2:converter-scalars:2.1.0 | | \--- com.squareup.retrofit2:retrofit:2.1.0 -> 2.3.0 (*) | +--- com.squareup.okhttp3:logging-interceptor:3.8.0 | | \--- com.squareup.okhttp3:okhttp:3.8.0 -> 3.9.0 (*) | +--- com.squareup.okhttp3:okhttp:3.9.0 (*) | +--- com.google.code.gson:gson:2.8.0 | +--- org.jsoup:jsoup:1.10.3 | \--- com.github.javafaker:javafaker:0.14 | +--- org.apache.commons:commons-lang3:3.5 | +--- org.yaml:snakeyaml:1.19 | \--- com.github.mifmif:generex:1.0.2 | \--- dk.brics.automaton:automaton:1.11-8 +--- io.grpc:grpc-netty:1.12.0 | +--- io.grpc:grpc-core:[1.12.0] -> 1.12.0 (*) | +--- io.netty:netty-codec-http2:[4.1.22.Final] -> 4.1.22.Final | | +--- io.netty:netty-codec-http:4.1.22.Final | | | \--- io.netty:netty-codec:4.1.22.Final | | | \--- io.netty:netty-transport:4.1.22.Final | | | +--- io.netty:netty-buffer:4.1.22.Final | | | | \--- io.netty:netty-common:4.1.22.Final | | | \--- io.netty:netty-resolver:4.1.22.Final | | | \--- io.netty:netty-common:4.1.22.Final | | \--- io.netty:netty-handler:4.1.22.Final | | +--- io.netty:netty-buffer:4.1.22.Final (*) | | +--- io.netty:netty-transport:4.1.22.Final (*) | | \--- io.netty:netty-codec:4.1.22.Final (*) | \--- io.netty:netty-handler-proxy:4.1.22.Final | +--- io.netty:netty-transport:4.1.22.Final (*) | +--- io.netty:netty-codec-socks:4.1.22.Final | | \--- io.netty:netty-codec:4.1.22.Final (*) | \--- io.netty:netty-codec-http:4.1.22.Final (*) +--- org.jetbrains.kotlin:kotlin-stdlib:1.2.40 (*) \--- io.netty:netty-tcnative-boringssl-static:2.0.8.Final runtimeElements - Elements of runtime for main. (n) No dependencies runtimeOnly - Runtime only dependencies for source set 'main'. (n) No dependencies testAnnotationProcessor - Annotation processors and their dependencies for source set 'test'. No dependencies testCompile - Dependencies for source set 'test' (deprecated, use 'testImplementation ' instead). +--- project :dataseedingapi | +--- io.grpc:grpc-protobuf-lite:1.6.1 | | +--- io.grpc:grpc-core:1.6.1 -> 1.12.0 | | | +--- io.grpc:grpc-context:1.12.0 | | | +--- com.google.code.gson:gson:2.7 -> 2.8.0 | | | +--- com.google.guava:guava:20.0 -> 23.6.1-jre | | | | +--- com.google.code.findbugs:jsr305:1.3.9 -> 3.0.0 | | | | +--- org.checkerframework:checker-compat-qual:2.0.0 | | | | +--- com.google.errorprone:error_prone_annotations:2.1.3 | | | | +--- com.google.j2objc:j2objc-annotations:1.1 | | | | \--- org.codehaus.mojo:animal-sniffer-annotations:1.14 | | | +--- com.google.errorprone:error_prone_annotations:2.1.2 -> 2.1.3 | | | +--- com.google.code.findbugs:jsr305:3.0.0 | | | +--- io.opencensus:opencensus-api:0.11.0 | | | \--- io.opencensus:opencensus-contrib-grpc-metrics:0.11.0 | | | \--- io.opencensus:opencensus-api:0.11.0 | | +--- com.google.protobuf:protobuf-lite:3.0.1 | | \--- com.google.guava:guava:19.0 -> 23.6.1-jre (*) | +--- io.grpc:grpc-stub:1.6.1 | | \--- io.grpc:grpc-core:1.6.1 -> 1.12.0 (*) | +--- org.jetbrains.kotlin:kotlin-stdlib:1.2.40 | | \--- org.jetbrains:annotations:13.0 | +--- com.squareup.retrofit2:retrofit:2.3.0 | | \--- com.squareup.okhttp3:okhttp:3.8.0 -> 3.9.0 | | \--- com.squareup.okio:okio:1.13.0 | +--- com.squareup.retrofit2:converter-gson:2.3.0 | | +--- com.squareup.retrofit2:retrofit:2.3.0 (*) | | \--- com.google.code.gson:gson:2.7 -> 2.8.0 | +--- com.squareup.retrofit2:converter-scalars:2.1.0 | | \--- com.squareup.retrofit2:retrofit:2.1.0 -> 2.3.0 (*) | +--- com.squareup.okhttp3:logging-interceptor:3.8.0 | | \--- com.squareup.okhttp3:okhttp:3.8.0 -> 3.9.0 (*) | +--- com.squareup.okhttp3:okhttp:3.9.0 (*) | +--- com.google.code.gson:gson:2.8.0 | +--- org.jsoup:jsoup:1.10.3 | \--- com.github.javafaker:javafaker:0.14 | +--- org.apache.commons:commons-lang3:3.5 | +--- org.yaml:snakeyaml:1.19 | \--- com.github.mifmif:generex:1.0.2 | \--- dk.brics.automaton:automaton:1.11-8 +--- io.grpc:grpc-netty:1.12.0 | +--- io.grpc:grpc-core:[1.12.0] -> 1.12.0 (*) | +--- io.netty:netty-codec-http2:[4.1.22.Final] -> 4.1.22.Final | | +--- io.netty:netty-codec-http:4.1.22.Final | | | \--- io.netty:netty-codec:4.1.22.Final | | | \--- io.netty:netty-transport:4.1.22.Final | | | +--- io.netty:netty-buffer:4.1.22.Final | | | | \--- io.netty:netty-common:4.1.22.Final | | | \--- io.netty:netty-resolver:4.1.22.Final | | | \--- io.netty:netty-common:4.1.22.Final | | \--- io.netty:netty-handler:4.1.22.Final | | +--- io.netty:netty-buffer:4.1.22.Final (*) | | +--- io.netty:netty-transport:4.1.22.Final (*) | | \--- io.netty:netty-codec:4.1.22.Final (*) | \--- io.netty:netty-handler-proxy:4.1.22.Final | +--- io.netty:netty-transport:4.1.22.Final (*) | +--- io.netty:netty-codec-socks:4.1.22.Final | | \--- io.netty:netty-codec:4.1.22.Final (*) | \--- io.netty:netty-codec-http:4.1.22.Final (*) +--- org.jetbrains.kotlin:kotlin-stdlib:1.2.40 (*) +--- io.netty:netty-tcnative-boringssl-static:2.0.8.Final \--- junit:junit:4.12 \--- org.hamcrest:hamcrest-core:1.3 testCompileClasspath - Compile classpath for source set 'test'. +--- project :dataseedingapi | +--- io.grpc:grpc-protobuf-lite:1.6.1 | | +--- io.grpc:grpc-core:1.6.1 -> 1.12.0 | | | +--- io.grpc:grpc-context:1.12.0 | | | +--- com.google.code.gson:gson:2.7 | | | +--- com.google.guava:guava:20.0 -> 23.6.1-jre | | | | +--- com.google.code.findbugs:jsr305:1.3.9 -> 3.0.0 | | | | +--- org.checkerframework:checker-compat-qual:2.0.0 | | | | +--- com.google.errorprone:error_prone_annotations:2.1.3 | | | | +--- com.google.j2objc:j2objc-annotations:1.1 | | | | \--- org.codehaus.mojo:animal-sniffer-annotations:1.14 | | | +--- com.google.errorprone:error_prone_annotations:2.1.2 -> 2.1.3 | | | +--- com.google.code.findbugs:jsr305:3.0.0 | | | +--- io.opencensus:opencensus-api:0.11.0 | | | \--- io.opencensus:opencensus-contrib-grpc-metrics:0.11.0 | | | \--- io.opencensus:opencensus-api:0.11.0 | | +--- com.google.protobuf:protobuf-lite:3.0.1 | | \--- com.google.guava:guava:19.0 -> 23.6.1-jre (*) | \--- io.grpc:grpc-stub:1.6.1 | \--- io.grpc:grpc-core:1.6.1 -> 1.12.0 (*) +--- io.grpc:grpc-netty:1.12.0 | +--- io.grpc:grpc-core:[1.12.0] -> 1.12.0 (*) | +--- io.netty:netty-codec-http2:[4.1.22.Final] -> 4.1.22.Final | | +--- io.netty:netty-codec-http:4.1.22.Final | | | \--- io.netty:netty-codec:4.1.22.Final | | | \--- io.netty:netty-transport:4.1.22.Final | | | +--- io.netty:netty-buffer:4.1.22.Final | | | | \--- io.netty:netty-common:4.1.22.Final | | | \--- io.netty:netty-resolver:4.1.22.Final | | | \--- io.netty:netty-common:4.1.22.Final | | \--- io.netty:netty-handler:4.1.22.Final | | +--- io.netty:netty-buffer:4.1.22.Final (*) | | +--- io.netty:netty-transport:4.1.22.Final (*) | | \--- io.netty:netty-codec:4.1.22.Final (*) | \--- io.netty:netty-handler-proxy:4.1.22.Final | +--- io.netty:netty-transport:4.1.22.Final (*) | +--- io.netty:netty-codec-socks:4.1.22.Final | | \--- io.netty:netty-codec:4.1.22.Final (*) | \--- io.netty:netty-codec-http:4.1.22.Final (*) +--- org.jetbrains.kotlin:kotlin-stdlib:1.2.40 | \--- org.jetbrains:annotations:13.0 +--- io.netty:netty-tcnative-boringssl-static:2.0.8.Final \--- junit:junit:4.12 \--- org.hamcrest:hamcrest-core:1.3 testCompileOnly - Compile only dependencies for source set 'test'. No dependencies testImplementation - Implementation only dependencies for source set 'test'. (n) No dependencies testRuntime - Runtime dependencies for source set 'test' (deprecated, use 'testRuntimeOnly ' instead). +--- project :dataseedingapi | +--- io.grpc:grpc-protobuf-lite:1.6.1 | | +--- io.grpc:grpc-core:1.6.1 -> 1.12.0 | | | +--- io.grpc:grpc-context:1.12.0 | | | +--- com.google.code.gson:gson:2.7 -> 2.8.0 | | | +--- com.google.guava:guava:20.0 -> 23.6.1-jre | | | | +--- com.google.code.findbugs:jsr305:1.3.9 -> 3.0.0 | | | | +--- org.checkerframework:checker-compat-qual:2.0.0 | | | | +--- com.google.errorprone:error_prone_annotations:2.1.3 | | | | +--- com.google.j2objc:j2objc-annotations:1.1 | | | | \--- org.codehaus.mojo:animal-sniffer-annotations:1.14 | | | +--- com.google.errorprone:error_prone_annotations:2.1.2 -> 2.1.3 | | | +--- com.google.code.findbugs:jsr305:3.0.0 | | | +--- io.opencensus:opencensus-api:0.11.0 | | | \--- io.opencensus:opencensus-contrib-grpc-metrics:0.11.0 | | | \--- io.opencensus:opencensus-api:0.11.0 | | +--- com.google.protobuf:protobuf-lite:3.0.1 | | \--- com.google.guava:guava:19.0 -> 23.6.1-jre (*) | +--- io.grpc:grpc-stub:1.6.1 | | \--- io.grpc:grpc-core:1.6.1 -> 1.12.0 (*) | +--- org.jetbrains.kotlin:kotlin-stdlib:1.2.40 | | \--- org.jetbrains:annotations:13.0 | +--- com.squareup.retrofit2:retrofit:2.3.0 | | \--- com.squareup.okhttp3:okhttp:3.8.0 -> 3.9.0 | | \--- com.squareup.okio:okio:1.13.0 | +--- com.squareup.retrofit2:converter-gson:2.3.0 | | +--- com.squareup.retrofit2:retrofit:2.3.0 (*) | | \--- com.google.code.gson:gson:2.7 -> 2.8.0 | +--- com.squareup.retrofit2:converter-scalars:2.1.0 | | \--- com.squareup.retrofit2:retrofit:2.1.0 -> 2.3.0 (*) | +--- com.squareup.okhttp3:logging-interceptor:3.8.0 | | \--- com.squareup.okhttp3:okhttp:3.8.0 -> 3.9.0 (*) | +--- com.squareup.okhttp3:okhttp:3.9.0 (*) | +--- com.google.code.gson:gson:2.8.0 | +--- org.jsoup:jsoup:1.10.3 | \--- com.github.javafaker:javafaker:0.14 | +--- org.apache.commons:commons-lang3:3.5 | +--- org.yaml:snakeyaml:1.19 | \--- com.github.mifmif:generex:1.0.2 | \--- dk.brics.automaton:automaton:1.11-8 +--- io.grpc:grpc-netty:1.12.0 | +--- io.grpc:grpc-core:[1.12.0] -> 1.12.0 (*) | +--- io.netty:netty-codec-http2:[4.1.22.Final] -> 4.1.22.Final | | +--- io.netty:netty-codec-http:4.1.22.Final | | | \--- io.netty:netty-codec:4.1.22.Final | | | \--- io.netty:netty-transport:4.1.22.Final | | | +--- io.netty:netty-buffer:4.1.22.Final | | | | \--- io.netty:netty-common:4.1.22.Final | | | \--- io.netty:netty-resolver:4.1.22.Final | | | \--- io.netty:netty-common:4.1.22.Final | | \--- io.netty:netty-handler:4.1.22.Final | | +--- io.netty:netty-buffer:4.1.22.Final (*) | | +--- io.netty:netty-transport:4.1.22.Final (*) | | \--- io.netty:netty-codec:4.1.22.Final (*) | \--- io.netty:netty-handler-proxy:4.1.22.Final | +--- io.netty:netty-transport:4.1.22.Final (*) | +--- io.netty:netty-codec-socks:4.1.22.Final | | \--- io.netty:netty-codec:4.1.22.Final (*) | \--- io.netty:netty-codec-http:4.1.22.Final (*) +--- org.jetbrains.kotlin:kotlin-stdlib:1.2.40 (*) +--- io.netty:netty-tcnative-boringssl-static:2.0.8.Final \--- junit:junit:4.12 \--- org.hamcrest:hamcrest-core:1.3 testRuntimeClasspath - Runtime classpath of source set 'test'. +--- project :dataseedingapi | +--- io.grpc:grpc-protobuf-lite:1.6.1 | | +--- io.grpc:grpc-core:1.6.1 -> 1.12.0 | | | +--- io.grpc:grpc-context:1.12.0 | | | +--- com.google.code.gson:gson:2.7 -> 2.8.0 | | | +--- com.google.guava:guava:20.0 -> 23.6.1-jre | | | | +--- com.google.code.findbugs:jsr305:1.3.9 -> 3.0.0 | | | | +--- org.checkerframework:checker-compat-qual:2.0.0 | | | | +--- com.google.errorprone:error_prone_annotations:2.1.3 | | | | +--- com.google.j2objc:j2objc-annotations:1.1 | | | | \--- org.codehaus.mojo:animal-sniffer-annotations:1.14 | | | +--- com.google.errorprone:error_prone_annotations:2.1.2 -> 2.1.3 | | | +--- com.google.code.findbugs:jsr305:3.0.0 | | | +--- io.opencensus:opencensus-api:0.11.0 | | | \--- io.opencensus:opencensus-contrib-grpc-metrics:0.11.0 | | | \--- io.opencensus:opencensus-api:0.11.0 | | +--- com.google.protobuf:protobuf-lite:3.0.1 | | \--- com.google.guava:guava:19.0 -> 23.6.1-jre (*) | +--- io.grpc:grpc-stub:1.6.1 | | \--- io.grpc:grpc-core:1.6.1 -> 1.12.0 (*) | +--- org.jetbrains.kotlin:kotlin-stdlib:1.2.40 | | \--- org.jetbrains:annotations:13.0 | +--- com.squareup.retrofit2:retrofit:2.3.0 | | \--- com.squareup.okhttp3:okhttp:3.8.0 -> 3.9.0 | | \--- com.squareup.okio:okio:1.13.0 | +--- com.squareup.retrofit2:converter-gson:2.3.0 | | +--- com.squareup.retrofit2:retrofit:2.3.0 (*) | | \--- com.google.code.gson:gson:2.7 -> 2.8.0 | +--- com.squareup.retrofit2:converter-scalars:2.1.0 | | \--- com.squareup.retrofit2:retrofit:2.1.0 -> 2.3.0 (*) | +--- com.squareup.okhttp3:logging-interceptor:3.8.0 | | \--- com.squareup.okhttp3:okhttp:3.8.0 -> 3.9.0 (*) | +--- com.squareup.okhttp3:okhttp:3.9.0 (*) | +--- com.google.code.gson:gson:2.8.0 | +--- org.jsoup:jsoup:1.10.3 | \--- com.github.javafaker:javafaker:0.14 | +--- org.apache.commons:commons-lang3:3.5 | +--- org.yaml:snakeyaml:1.19 | \--- com.github.mifmif:generex:1.0.2 | \--- dk.brics.automaton:automaton:1.11-8 +--- io.grpc:grpc-netty:1.12.0 | +--- io.grpc:grpc-core:[1.12.0] -> 1.12.0 (*) | +--- io.netty:netty-codec-http2:[4.1.22.Final] -> 4.1.22.Final | | +--- io.netty:netty-codec-http:4.1.22.Final | | | \--- io.netty:netty-codec:4.1.22.Final | | | \--- io.netty:netty-transport:4.1.22.Final | | | +--- io.netty:netty-buffer:4.1.22.Final | | | | \--- io.netty:netty-common:4.1.22.Final | | | \--- io.netty:netty-resolver:4.1.22.Final | | | \--- io.netty:netty-common:4.1.22.Final | | \--- io.netty:netty-handler:4.1.22.Final | | +--- io.netty:netty-buffer:4.1.22.Final (*) | | +--- io.netty:netty-transport:4.1.22.Final (*) | | \--- io.netty:netty-codec:4.1.22.Final (*) | \--- io.netty:netty-handler-proxy:4.1.22.Final | +--- io.netty:netty-transport:4.1.22.Final (*) | +--- io.netty:netty-codec-socks:4.1.22.Final | | \--- io.netty:netty-codec:4.1.22.Final (*) | \--- io.netty:netty-codec-http:4.1.22.Final (*) +--- org.jetbrains.kotlin:kotlin-stdlib:1.2.40 (*) +--- io.netty:netty-tcnative-boringssl-static:2.0.8.Final \--- junit:junit:4.12 \--- org.hamcrest:hamcrest-core:1.3 testRuntimeOnly - Runtime only dependencies for source set 'test'. (n) No dependencies (*) - dependencies omitted (listed previously) A web-based, searchable dependency report is available by adding the --scan option. BUILD SUCCESSFUL in 0s 1 actionable task: 1 executed
Buildscript modification is also resulting in the same error:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath "com.google.guava:guava:23.6.1-jre"
classpath Plugins.KOTLIN
}
}
Ah sorry, I should have been more clear, the buildscript classpath is separate from your application, it's the classpath of the instance of gradle+plugins building your application. But it looks like you covered it anyway in : https://github.com/GoogleContainerTools/jib/issues/591#issuecomment-404698414
I still think it could be a buildscript dependency issue:
gradle buildEnvironment
and see what the output is?Can you run gradle buildEnvironment and see what the output is?
------------------------------------------------------------ Root project ------------------------------------------------------------ classpath +--- com.google.guava:guava:23.6.1-jre | +--- com.google.code.findbugs:jsr305:1.3.9 | +--- org.checkerframework:checker-compat-qual:2.0.0 | +--- com.google.errorprone:error_prone_annotations:2.1.3 | +--- com.google.j2objc:j2objc-annotations:1.1 | \--- org.codehaus.mojo:animal-sniffer-annotations:1.14 +--- org.jetbrains.kotlin:kotlin-gradle-plugin:1.2.40 | +--- org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.2.40 | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.2.40 | | \--- org.jetbrains:annotations:13.0 | +--- org.jetbrains.kotlin:kotlin-stdlib:1.2.40 (*) | +--- org.jetbrains.kotlin:kotlin-compiler-embeddable:1.2.40 | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.2.40 (*) | | \--- org.jetbrains.kotlin:kotlin-script-runtime:1.2.40 | +--- org.jetbrains.kotlin:kotlin-annotation-processing-gradle:1.2.40 | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.2.40 (*) | | \--- org.jetbrains.kotlin:kotlin-compiler-embeddable:1.2.40 (*) | +--- org.jetbrains.kotlin:kotlin-android-extensions:1.2.40 | | \--- org.jetbrains.kotlin:kotlin-compiler-embeddable:1.2.40 (*) | +--- org.jetbrains.kotlin:kotlin-compiler-runner:1.2.40 | | +--- org.jetbrains.kotlin:kotlin-build-common:1.2.40 | | \--- org.jetbrains.kotlin:kotlin-daemon-client:1.2.40 | \--- org.jetbrains.kotlin:kotlin-reflect:1.2.40 | \--- org.jetbrains.kotlin:kotlin-stdlib:1.2.40 (*) \--- com.google.cloud.tools.jib:com.google.cloud.tools.jib.gradle.plugin:0.9.6 \--- gradle.plugin.com.google.cloud.tools:jib-gradle-plugin:0.9.6 +--- com.google.http-client:google-http-client:1.23.0 | +--- com.google.code.findbugs:jsr305:1.3.9 | \--- org.apache.httpcomponents:httpclient:4.0.1 | +--- org.apache.httpcomponents:httpcore:4.0.1 | +--- commons-logging:commons-logging:1.1.1 | \--- commons-codec:commons-codec:1.3 +--- org.apache.commons:commons-compress:1.17 +--- com.google.guava:guava:23.5-jre -> 23.6.1-jre (*) +--- com.fasterxml.jackson.core:jackson-databind:2.9.6 | +--- com.fasterxml.jackson.core:jackson-annotations:2.9.0 | \--- com.fasterxml.jackson.core:jackson-core:2.9.6 +--- org.slf4j:slf4j-api:1.7.25 \--- org.javassist:javassist:3.22.0-GA (*) - dependencies omitted (listed previously) A web-based, searchable dependency report is available by adding the --scan option. BUILD SUCCESSFUL in 0s 1 actionable task: 1 executed
I'm not familiar with Plugins.KOTLIN, what is that referencing? Can you point me to where you found that?
GlobalDependencies.kt#L80 defines Plugins.KOTLIN
in the buildSrc
symlink.
Do you have a parent build.gradle that is bringing in buildscript dependencies?
This is an older release, however it's the same project I'm working on:
I'll see if I can update the open source to get a reproducible example.
So there is a quirk of gradle where a parent build classpath take priority over a child buildscript classpath (https://discuss.gradle.org/t/version-is-root-build-gradle-buildscript-is-overriding-subproject-buildscript-dependency-versions/20746)
The protobuf-gradle-plugin in the soseedgrpc and dataseedingapi projects appears to be pulling in guava:18 see: https://github.com/google/protobuf-gradle-plugin/blob/master/build.gradle#L68
Now, if my assumptions are correct, you might be able to fix this by putting the guava version override in your root bulid.gradle (in buildscript classpath above other dependencies)
you might be able to fix this by putting the guava version override in your root bulid.gradle (in buildscript classpath above other dependencies)
I put
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath("com.google.guava:guava:23.6.1-jre")
}
}
at the top of all the build.gradle files and it didn't help. 😭
I even tried a resolution strategy in the buildscript
I think jib may want to shade guava.
Any chance you could provide a minimal project so I can analyze the problem on my machine?
Any chance you could provide a minimal project so I can analyze the problem on my machine?
git clone https://github.com/instructure/instructure-android.git
cd instructure-android/automation/soseedygrpc
gradle jib
That reproduces the problem using the open source version. Note that gradle
is used directly instead of gradlew
@bootstraponline, it would have been really helpful if the gradlew was the correct version. I ended up disabling jib to update the gradle wrapper and then re-enabling jib.
@bootstraponline, it would have been really helpful if the gradlew was the correct version
Yeah it is in the private repo. Unfortunately updating gradle in the public one breaks all the builds. I am working on a better process for our open source code so it's possible to keep up to date. I couldn't get the error to reproduce on a sample project.
There are some updates on the other thread:
It looks like protobuf-gradle-plugin
is not the issue. It's not clear to me how to resolve the problem.
Right, the problem is dealing with how gradle resolves buildscript classpath dependencies, and not a problem with the protobuf plugin itself.
One more clue in this problem is that it looks like ImmutableList
is being loaded fromguava-22
?!, that doesn't really make sense to me.
I'm seeing this info using code from this example. Just put it in your build.gradle and have it execute.
Class klass = com.google.common.collect.ImmutableList.class;
URL location = klass.getResource('/' + klass.getName().replace('.', '/') + ".class");
println "ImmutableClass from: " + location
run ./gradlew tasks
or gradle tasks
and you'll see the output
ImmutableList from:jar:file:/user-home/.gradle./caches/modules-2/files-2.1/com.google.guava/guava/22.0/3564ef3803de51fb0530a8377ec6100b33b0d073/guava-22.0.jar!/com/google/common/collect/ImmutableList.class
I still can't figure out why this is being loaded in, when all buildscript info is pointing to 23.5-jre
. I might need to take a deeper look into buildscript deps.
okay, so I just saw @ejona86's reference to a core gradle bug about guava leaking in https://github.com/gradle/gradle/issues/3698. But it's weird that we're only seeing this intermittently (just your project?).
But it's weird that we're only seeing this intermittently (just your project?).
Yeah, I have no idea why it's only my project that triggers the gradle core issue.
I'm getting the same output from the code snippet:
ImmutableClass from: jar:file:/Users/user/.gradle/caches/modules-2/files-2.1/com.google.guava/guava/22.0/3564ef3803de51fb0530a8377ec6100b33b0d073/guava-22.0.jar!/com/google/common/collect/ImmutableList.class
I am working with our Android team to update the open source repo. I think for now I'll have to use the distroless docker images directly. I'm worried about adding a bunch of complexity that can't be easily debugged or fixed. I wish Gradle didn't have so many sharp corners.
Thanks for your help in investigating the problem!
Closing - feel free to reopen if you have any further questions!
I'm currently running into the same issue. While overriding guava is a Gradle issue, I think it would still be great if the plugin could either eliminate the guava third-party dependency or shade it along the line of https://github.com/project-aries/docker-java-shaded to become standalone again and works regardless of what other plugins are in use.
@coollog is a workaround known please? I've skimmed through this bug but nothing seems to be working for me. The steps to reproduce are easy:
plugins {}
stanza and add id("com.google.cloud.tools.jib") version "1.0.2"
./gradlew clean jib --image=test/karibu-helloworld-app
slovdahl's workaround of excluding guava in buildscript{}
unfortunately doesn't seem to work. Adding compile 'com.google.guava:guava:23.6-jre'
dependency doesn't work. I understand it's a bug in Gradle but it has been there for quite some time...
Hi @mvysny,
I think your issue is different from this. I put the following at the top of your build.gradle.kts
to let the buildscript use Guava 27.0.1-jre (the one that Jib 1.0.2 uses), and it works.
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath("com.google.guava:guava:27.0.1-jre")
}
}
chanseok@chanseok1:~/tmp/karibu-helloworld-application (master)$ ./gradlew jib --image=francium25/test --stacktrace
> Configure project :
Using Gradle Vaadin Plugin 1.4.1
Containerizing application to francium25/test...
Container entrypoint set to [/usr/bin/java, -jar] (inherited from base image)
Container program arguments set to [/jetty/start.jar] (inherited from base image)
Built and pushed image as francium25/test
Executing tasks:
[==============================] 100.0% complete
Deprecated Gradle features were used in this build, making it incompatible with Gradle 6.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/5.2.1/userguide/command_line_interface.html#sec:command_line_warnings
BUILD SUCCESSFUL in 9s
9 actionable tasks: 7 executed, 2 up-to-date
chanseok@chanseok1:~/tmp/karibu-helloworld-application (master)$
@mvysny your sample program works well too:
$ docker run --rm -it -p8080:8080 francium25/test
$ curl localhost:8080
<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=11">
<style type="text/css">html, body {height:100%;margin:0;}</style>
@chanseokoh awesome, your suggestion also worked for me! Thank you :)
I experience this issue with Gradle 5.6.2. The mentioned https://github.com/gradle/gradle/issues/3698 bug supposed to be fixed there already.
Adding Guava dependency in the buildscript
block does not fix the problem either.
Hi @sergeykad, recent Jib versions use Guava 28. Try forcing guava 28.0-jre by following https://github.com/GoogleContainerTools/jib/issues/1390#issuecomment-451286883. If it doesn't work, could you provide us a small sample that reproduces the issue (e.g., like https://github.com/GoogleContainerTools/jib/issues/591#issuecomment-477897568)?
@chanseokoh I tried it now, but no dice.
BTW I use guava 28.0-jre in my project too. I will try to create a sample next week.
Running gradle buildEnvironment
helped to find the problem. The parent build.gradle
file have the following:
buildscript {
repositories { jcenter() }
dependencies {
classpath 'com.netflix.nebula:gradle-lint-plugin:latest.release'
}
}
The gradle-lint-plugin
uses guava 19.0. As soon as I removed it, guava version jumped to the correct one.
The question is it somehow possible to use the both plugins or I have to choose one?
Running
gradle buildEnvironment
helped to find the problem.
Ah, great! I have been looking for this command for months. Thanks for the tip.
And I just realized https://github.com/GoogleContainerTools/jib/issues/591#issuecomment-478027065 doesn't force a certain Guava version. See https://github.com/GoogleContainerTools/jib/issues/1390#issuecomment-451286883 for the force = true
usage. Perhaps you need to apply this to the parent build.gradle
where gradle-lint-plugin
is defined.
If that fails, you can explicitly exclude Guava from the plugin:
classpath('com.netflix.nebula:gradle-lint-plugin:latest.release') {
exclude group: 'com.google.guava', module: 'guava'
}
I believe you can just include it with the Netflix nebula dependency (instead of at the subproject level) and it should work. Subproject buildscript dependencies can't override parent ones.
For others that run into this issue and the above doesn't help, I found in my own build that dependencies forced in the main build in
buildscript {
dependencies {
...
}
}
would be ignored if they are already resolved from dependencies declared in the buildSrc/build.gradle. So make sure that the dependency conflict is resolved there if you have a buildSrc build.gradle file.
dependencies forced in the main build ... would be ignored if they are already resolved ... So make sure that the dependency conflict is resolved there
Aha, this makes a lot of sense. That also explains why you cannot override parent dependencies from subproject buildscripts. Thanks for the tip!
Hello from 2023:
Caused by: java.lang.NoSuchMethodError: 'java.util.stream.Collector com.google.common.collect.ImmutableList.toImmutableList()'
at com.google.cloud.tools.jib.filesystem.DirectoryWalker.walk(DirectoryWalker.java:93)
at com.google.cloud.tools.jib.filesystem.DirectoryWalker.walk(DirectoryWalker.java:78)
at com.google.cloud.tools.jib.api.JavaContainerBuilder.addDirectoryContentsToLayer(JavaContainerBuilder.java:716)
at com.google.cloud.tools.jib.api.JavaContainerBuilder.toContainerBuilder(JavaContainerBuilder.java:562)
at com.google.cloud.tools.jib.gradle.GradleProjectProperties.createJibContainerBuilder(GradleProjectProperties.java:282)
at com.google.cloud.tools.jib.plugins.common.PluginConfigurationProcessor.processCommonConfiguration(PluginConfigurationProcessor.java:430)
at com.google.cloud.tools.jib.plugins.common.PluginConfigurationProcessor.processCommonConfiguration(PluginConfigurationProcessor.java:490)
at com.google.cloud.tools.jib.plugins.common.PluginConfigurationProcessor.createJibBuildRunnerForRegistryImage(PluginConfigurationProcessor.java:309)
at com.google.cloud.tools.jib.gradle.BuildImageTask.buildImage(BuildImageTask.java:116)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
This should probably be re-opened and a fresh look given at shading
@sgammon take a look at this FAQ. You should set up your project exactly as described there.
@chanseokoh we are authors of Gradle plugins ourselves so classpath issues are pretty familiar
We've seen the FAQ and followed all possible options, as well as in this thread, with no success. Our project structure is a bit different than what we've seen here, though.
Can I politely ask why you don't choose to shade Guava? It has caused so many issues for us with Jib, and it is a relatively small dependency. We would be very in favor of shading as a possible fix. gRPC shades the entirety of Netty to avoid similar issues and this seems less costly by comparison.
Do note that Gradle has a bug where its buildEnv
reports wrong info. The reason you are hitting the error is that your project loaded a wrong version of Guava, which you can definitely fix.
I am not in the position to answer why Jib doesn't shade its dependences, sorry.
We've generally tried to avoid shading. Is jib at too old a version or too new a version of guava?
@chanseokoh
Do note that Gradle has a bug where its buildEnv reports wrong info. The reason you are hitting the error is that your project loaded a wrong version of Guava, which you can definitely fix.
Thank you, yes, I know. It is not easily fixable, though, because, as you say, the effective buildEnv
dependencies for a sufficiently complex Gradle project aren't immediately clear, and sometimes it is hard to gain control over them. In our case we have several places this incorrect dependency could be coming from; these include, but are not limited to: a buildSrc
project, several included (composite) builds, several suspect plugins, and the buildscript
classpath
itself.
Altogether these conditions make this bug nearly impossible to solve for regular users or even skilled users like us.
@loosebazooka
We've generally tried to avoid shading. Is jib at too old a version or too new a version of guava?
It's a NoSuchMethodError
on something introduced in Guava 21.0
. I honestly couldn't tell you, because AFAIK Guava makes every attempt not to delete symbols, and that would suggest a rather ancient version of Guava leaking onto the classpath. FWIW we are on latest in our own apps but those don't seem to be making it into the classpath so it's a moot point.
We've generally tried to avoid shading.
I understand this will increase the size of the shipped JAR and of course adds build complexity, but we are completely unable to push images for our app at the moment, since we relied on Jib to do that and now it is broken. This is only Jib's fault insofar as it relies on a stable version of Guava which works with transitive dependencies and is unshaded. The only part under Jib's control is to shade/not shade, then, since Gradle isn't reliably handling these dependencies, even at latest (we're on 8.5
).
We could get something else working, but Jib's responsibility at this pivotal juncture means we are unlikely to come back to it even though we love it. I.e. the pain of working around this bug is more than the benefit offered by the library, in some cases.
This can sneak into a build pretty easily, because people often don't run Jib until it is time to deploy (since pushing and storing containers is costly!). So, you work for a few days/weeks/months, then go to deploy, and now you hit this bug. What happened along the way to shift your Guava version, in the last N commits? The answer is very hard to locate, as it turns out.
I'm just saying that, as a user journey, it doesn't get any worse than a confusing and broken experience. Ultimately, the few-megabytes of shading starts to look smaller and smaller from where we stand, but again this is just one user's perspective, having used Jib since the very beginning.
(One more note: I've now observed this very same bug in a completely unrelated Android project. I'll try to isolate there as it might yield clues to what is causing this with Jib. Literally the same exact symbol and exception, but over here, when adding libs.plugins.android.library
to a common module).
Description of the issue:
./gradlew jib
failsExpected behavior:
./gradlew jib
worksSteps to reproduce:
I added jib to my project and
./gradlew jib
is broken.Environment:
jib-gradle-plugin
Configuration:Log output:
Gradle stacktrace
Additional Information:
I'm using Kotlin.
./gradlew assemble
works.