I have the following Dockerfile, where I set APP_CLASSPATH
explicit in purpose of debug:
FROM gradle:8.11.1-jdk17-graal AS build
COPY --chown=gradle:gradle . /home/gradle/src
WORKDIR /home/gradle/src
RUN gradle build -x test --no-daemon
FROM openjdk:17-jdk-slim
RUN mkdir /app
COPY --from=build /home/gradle/src /app/
RUN mkdir /appLibs
COPY --from=build /opt/gradle/lib /appLibs
ENV APP_CLASSPATH="/appLibs/agents:/appLibs/annotations-24.0.1.jar:/appLibs/ant-1.10.14.jar:/appLibs/ant-antlr-1.10.14.jar:/appLibs/ant-junit-1.10.14.jar:/appLibs/ant-launcher-1.10.14.jar:/appLibs/antlr4-runtime-4.7.2.jar:/appLibs/asm-9.7.jar:/appLibs/asm-commons-9.7.jar:/appLibs/asm-tree-9.7.jar:/appLibs/commons-codec-1.16.1.jar:/appLibs/commons-compress-1.26.1.jar:/appLibs/commons-io-2.15.1.jar:/appLibs/commons-lang-2.6.jar:/appLibs/commons-lang3-3.14.0.jar:/appLibs/error_prone_annotations-2.29.0.jar:/appLibs/failureaccess-1.0.1.jar:/appLibs/fastutil-8.5.2-min.jar:/appLibs/file-events-0.22-milestone-26.jar:/appLibs/file-events-linux-aarch64-0.22-milestone-26.jar:/appLibs/file-events-linux-amd64-0.22-milestone-26.jar:/appLibs/file-events-osx-aarch64-0.22-milestone-26.jar:/appLibs/file-events-osx-amd64-0.22-milestone-26.jar:/appLibs/file-events-windows-amd64-0.22-milestone-26.jar:/appLibs/file-events-windows-amd64-min-0.22-milestone-26.jar:/appLibs/file-events-windows-i386-0.22-milestone-26.jar:/appLibs/file-events-windows-i386-min-0.22-milestone-26.jar:/appLibs/gradle-api-metadata-8.11.1.jar:/appLibs/gradle-base-asm-8.11.1.jar:/appLibs/gradle-base-services-8.11.1.jar:/appLibs/gradle-base-services-groovy-8.11.1.jar:/appLibs/gradle-build-cache-8.11.1.jar:/appLibs/gradle-build-cache-base-8.11.1.jar:/appLibs/gradle-build-cache-local-8.11.1.jar:/appLibs/gradle-build-cache-packaging-8.11.1.jar:/appLibs/gradle-build-cache-spi-8.11.1.jar:/appLibs/gradle-build-events-8.11.1.jar:/appLibs/gradle-build-operations-8.11.1.jar:/appLibs/gradle-build-operations-trace-8.11.1.jar:/appLibs/gradle-build-option-8.11.1.jar:/appLibs/gradle-build-process-services-8.11.1.jar:/appLibs/gradle-build-state-8.11.1.jar:/appLibs/gradle-cli-8.11.1.jar:/appLibs/gradle-client-services-8.11.1.jar:/appLibs/gradle-concurrent-8.11.1.jar:/appLibs/gradle-configuration-problems-base-8.11.1.jar:/appLibs/gradle-core-8.11.1.jar:/appLibs/gradle-core-api-8.11.1.jar:/appLibs/gradle-daemon-main-8.11.1.jar:/appLibs/gradle-daemon-protocol-8.11.1.jar:/appLibs/gradle-daemon-server-8.11.1.jar:/appLibs/gradle-daemon-services-8.11.1.jar:/appLibs/gradle-declarative-dsl-api-8.11.1.jar:/appLibs/gradle-declarative-dsl-core-8.11.1.jar:/appLibs/gradle-declarative-dsl-evaluator-8.11.1.jar:/appLibs/gradle-declarative-dsl-internal-utils-8.11.1.jar:/appLibs/gradle-declarative-dsl-provider-8.11.1.jar:/appLibs/gradle-declarative-dsl-tooling-models-8.11.1.jar:/appLibs/gradle-enterprise-logging-8.11.1.jar:/appLibs/gradle-enterprise-operations-8.11.1.jar:/appLibs/gradle-enterprise-workers-8.11.1.jar:/appLibs/gradle-execution-8.11.1.jar:/appLibs/gradle-file-collections-8.11.1.jar:/appLibs/gradle-file-operations-8.11.1.jar:/appLibs/gradle-file-temp-8.11.1.jar:/appLibs/gradle-file-watching-8.11.1.jar:/appLibs/gradle-files-8.11.1.jar:/appLibs/gradle-functional-8.11.1.jar:/appLibs/gradle-gradle-cli-8.11.1.jar:/appLibs/gradle-gradle-cli-main-8.11.1.jar:/appLibs/gradle-hashing-8.11.1.jar:/appLibs/gradle-input-tracking-8.11.1.jar:/appLibs/gradle-installation-beacon-8.11.1.jar:/appLibs/gradle-instrumentation-agent-services-8.11.1.jar:/appLibs/gradle-instrumentation-reporting-8.11.1.jar:/appLibs/gradle-internal-instrumentation-api-8.11.1.jar:/appLibs/gradle-io-8.11.1.jar:/appLibs/gradle-java-api-extractor-8.11.1.jar:/appLibs/gradle-jvm-services-8.11.1.jar:/appLibs/gradle-kotlin-dsl-8.11.1.jar:/appLibs/gradle-kotlin-dsl-extensions-8.11.1.jar:/appLibs/gradle-kotlin-dsl-shared-runtime-8.11.1.jar:/appLibs/gradle-kotlin-dsl-tooling-models-8.11.1.jar:/appLibs/gradle-launcher-8.11.1.jar:/appLibs/gradle-logging-8.11.1.jar:/appLibs/gradle-logging-api-8.11.1.jar:/appLibs/gradle-messaging-8.11.1.jar:/appLibs/gradle-model-core-8.11.1.jar:/appLibs/gradle-model-groovy-8.11.1.jar:/appLibs/gradle-native-8.11.1.jar:/appLibs/gradle-normalization-java-8.11.1.jar:/appLibs/gradle-persistent-cache-8.11.1.jar:/appLibs/gradle-problems-8.11.1.jar:/appLibs/gradle-problems-api-8.11.1.jar:/appLibs/gradle-process-memory-services-8.11.1.jar:/appLibs/gradle-process-services-8.11.1.jar:/appLibs/gradle-resources-8.11.1.jar:/appLibs/gradle-runtime-api-info-8.11.1.jar:/appLibs/gradle-serialization-8.11.1.jar:/appLibs/gradle-service-lookup-8.11.1.jar:/appLibs/gradle-service-provider-8.11.1.jar:/appLibs/gradle-service-registry-builder-8.11.1.jar:/appLibs/gradle-service-registry-impl-8.11.1.jar:/appLibs/gradle-snapshots-8.11.1.jar:/appLibs/gradle-stdlib-java-extensions-8.11.1.jar:/appLibs/gradle-stdlib-kotlin-extensions-8.11.1.jar:/appLibs/gradle-time-8.11.1.jar:/appLibs/gradle-toolchains-jvm-shared-8.11.1.jar:/appLibs/gradle-tooling-api-8.11.1.jar:/appLibs/gradle-tooling-api-provider-8.11.1.jar:/appLibs/gradle-worker-main-8.11.1.jar:/appLibs/gradle-wrapper-shared-8.11.1.jar:/appLibs/groovy-3.0.22.jar:/appLibs/groovy-ant-3.0.22.jar:/appLibs/groovy-astbuilder-3.0.22.jar:/appLibs/groovy-console-3.0.22.jar:/appLibs/groovy-datetime-3.0.22.jar:/appLibs/groovy-dateutil-3.0.22.jar:/appLibs/groovy-docgenerator-3.0.22.jar:/appLibs/groovy-groovydoc-3.0.22.jar:/appLibs/groovy-json-3.0.22.jar:/appLibs/groovy-nio-3.0.22.jar:/appLibs/groovy-sql-3.0.22.jar:/appLibs/groovy-swing-3.0.22.jar:/appLibs/groovy-templates-3.0.22.jar:/appLibs/groovy-test-3.0.22.jar:/appLibs/groovy-xml-3.0.22.jar:/appLibs/gson-2.10.jar:/appLibs/guava-32.1.2-jre.jar:/appLibs/hamcrest-core-1.3.jar:/appLibs/jackson-core-2.16.1.jar:/appLibs/jansi-1.18.jar:/appLibs/javaparser-core-3.17.0.jar:/appLibs/javax.inject-1.jar:/appLibs/jcl-over-slf4j-1.7.36.jar:/appLibs/jsr305-3.0.2.jar:/appLibs/jul-to-slf4j-1.7.36.jar:/appLibs/junit-4.13.2.jar:/appLibs/kotlin-assignment-compiler-plugin-embeddable-2.0.20.jar:/appLibs/kotlin-compiler-embeddable-2.0.20.jar:/appLibs/kotlin-daemon-embeddable-2.0.20.jar:/appLibs/kotlin-reflect-2.0.20.jar:/appLibs/kotlin-sam-with-receiver-compiler-plugin-2.0.20.jar:/appLibs/kotlin-script-runtime-2.0.20.jar:/appLibs/kotlin-scripting-common-2.0.20.jar:/appLibs/kotlin-scripting-compiler-embeddable-2.0.20.jar:/appLibs/kotlin-scripting-compiler-impl-embeddable-2.0.20.jar:/appLibs/kotlin-scripting-jvm-2.0.20.jar:/appLibs/kotlin-stdlib-2.0.20.jar:/appLibs/kotlinx-coroutines-core-jvm-1.6.2.jar:/appLibs/kotlinx-metadata-jvm-0.5.0.jar:/appLibs/kotlinx-serialization-core-jvm-1.6.2.jar:/appLibs/kotlinx-serialization-json-jvm-1.6.2.jar:/appLibs/kryo-2.24.0.jar:/appLibs/log4j-over-slf4j-1.7.36.jar:/appLibs/minlog-1.2.jar:/appLibs/native-platform-0.22-milestone-26.jar:/appLibs/native-platform-freebsd-amd64-libcpp-0.22-milestone-26.jar:/appLibs/native-platform-linux-aarch64-0.22-milestone-26.jar:/appLibs/native-platform-linux-aarch64-ncurses5-0.22-milestone-26.jar:/appLibs/native-platform-linux-aarch64-ncurses6-0.22-milestone-26.jar:/appLibs/native-platform-linux-amd64-0.22-milestone-26.jar:/appLibs/native-platform-linux-amd64-ncurses5-0.22-milestone-26.jar:/appLibs/native-platform-linux-amd64-ncurses6-0.22-milestone-26.jar:/appLibs/native-platform-osx-aarch64-0.22-milestone-26.jar:/appLibs/native-platform-osx-amd64-0.22-milestone-26.jar:/appLibs/native-platform-windows-amd64-0.22-milestone-26.jar:/appLibs/native-platform-windows-amd64-min-0.22-milestone-26.jar:/appLibs/native-platform-windows-i386-0.22-milestone-26.jar:/appLibs/native-platform-windows-i386-min-0.22-milestone-26.jar:/appLibs/objenesis-2.6.jar:/appLibs/plugins:/appLibs/qdox-1.12.1.jar:/appLibs/qqq:/appLibs/slf4j-api-1.7.36.jar:/appLibs/tomlj-1.0.0.jar:/appLibs/trove4j-1.0.20200330.jar:/appLibs/xml-apis-1.4.01.jar"
WORKDIR /app/samples/dispatcher/build/libs/
ENTRYPOINT ["java", "-XX:+UnlockExperimentalVMOptions", "-XX:+UseContainerSupport", "-Djava.security.egd=file:/dev/./urandom", "-cp", "$APP_CLASSPATH", "-jar","./myJar.jar"]
When I try to run the docker image, I have the following error:
Exception in thread "main" java.lang.NoClassDefFoundError: kotlinx/coroutines/ExecutorsKt
But the .jar file which contains this class is contained in APP_CLASSPATH
(it is /appLibs/kotlinx-coroutines-core-jvm-1.6.2.jar
), and /appLibs/
contains this jar, I checked it with docker run -it imageId sh
What could be the problem?
2