Jdeps: исключение в потоке «основной» java.lang.module.FindException: модуль jakarta.cdi не найден, требуется jakarta.trJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Jdeps: исключение в потоке «основной» java.lang.module.FindException: модуль jakarta.cdi не найден, требуется jakarta.tr

Сообщение Anonymous »

Я хочу уменьшить размер образа Docker, который должен содержать JDK 17 и мой app.jar. Я решил сделать это с помощью jlink, извлекая JDK, который будет включать только те модули, которые нужны моему приложению.
Основной процесс извлечения JDK выглядит следующим образом:
RUN jar xf ./target/app.jar
RUN jdeps --ignore-missing-deps --print-module-deps --multi-release 17 --recursive --class-path ./BOOT-INF/lib/* ./target/app.jar > modules.txt
RUN jlink --add-modules $(cat modules.txt) --strip-debug --no-man-pages --no-header-files --output jre-17

Он отлично работает на моем локальном компьютере (Windows 10), но не работает в Docker (openjdk:17-alpine). Я получаю эту ошибку:
------
> [auth build 7/8] RUN jdeps --ignore-missing-deps --print-module-deps --multi-release 17 --recursive --class-path ./BOOT-INF/lib/* ./target/app.jar > modules.txt:
5.271 Exception in thread "main" java.lang.module.FindException: Module jakarta.cdi not found, required by jakarta.transaction
5.347 at java.base/java.lang.module.Resolver.findFail(Resolver.java:893)
5.347 at java.base/java.lang.module.Resolver.resolve(Resolver.java:192)
5.347 at java.base/java.lang.module.Resolver.resolve(Resolver.java:141)
5.347 at java.base/java.lang.module.Configuration.resolve(Configuration.java:421)
5.350 at java.base/java.lang.module.Configuration.resolve(Configuration.java:255)
5.355 at jdk.jdeps/com.sun.tools.jdeps.JdepsConfiguration$Builder.build(JdepsConfiguration.java:564)
5.355 at jdk.jdeps/com.sun.tools.jdeps.JdepsTask.buildConfig(JdepsTask.java:603)
5.355 at jdk.jdeps/com.sun.tools.jdeps.JdepsTask.run(JdepsTask.java:557)
5.355 at jdk.jdeps/com.sun.tools.jdeps.JdepsTask.run(JdepsTask.java:533)
5.355 at jdk.jdeps/com.sun.tools.jdeps.Main.main(Main.java:49)
------
failed to solve: process "/bin/sh -c jdeps --ignore-missing-deps --print-module-deps --multi-release 17 --recursive --class-path ./BOOT-INF/lib/* ./target/app.jar > modules.txt" did not complete successfully: exit code: 1

Вот мой файл Docker:
# Build application
FROM openjdk:17-alpine AS build

# Install Maven
RUN apk update && apk add wget && apk add binutils
RUN wget https://dlcdn.apache.org/maven/maven-3/ ... bin.tar.gz \
&& tar -xzvf apache-maven-3.9.9-bin.tar.gz -C /opt/ \
&& rm apache-maven-3.9.9-bin.tar.gz
ENV PATH=$PATH:/opt/apache-maven-3.9.9/bin

WORKDIR /build

COPY . .

# RUN mvn clean package -DskipTests

RUN jar xf ./target/app.jar
RUN jdeps --ignore-missing-deps --print-module-deps --multi-release 17 --recursive --class-path ./BOOT-INF/lib/* ./target/app.jar > modules.txt
RUN RUN jlink --add-modules $(cat modules.txt) --strip-debug --no-man-pages --no-header-files --output jre-17

# Run application
FROM alpine:latest

WORKDIR /jre

COPY --from=build /build/jre-17 .

ENV JAVA_HOME /jre

ENV PATH=$PATH:$JAVA_HOME/bin

WORKDIR /app

COPY --from=build /build/target/app.jar .

CMD ["java", "-jar", "./app.jar"]

Что не так с моим Dockerfile?
pom.xml:


4.0.0

org.springframework.boot
spring-boot-starter-parent
3.3.2


Подробнее здесь: https://stackoverflow.com/questions/792 ... le-jakarta
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»