Как установить зависимости jwdp при использовании Jlink - PullRequest
1 голос
/ 22 октября 2019

Я создаю контейнер с приложением весенней загрузки. Java и необходимые модули устанавливаются с использованием jlink. Это выглядит так:

RUN jlink --compress=2 --no-header-files --no-man-pages \
     --add-modules java.base,java.desktop,java.instrument,java.logging,java.sql,java.xml \
     --output /opt/jre

и точка входа выглядит следующим образом:

ENTRYPOINT [ "sh", "-c", "java -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n -jar /app.jar"]

Запуск контейнера завершается неудачно, так как JVM не может найти собственную библиотеку для jdwp. Для jlink нет документации по включению jdwp двоичных файлов. Может быть, это из-за того, что минимальное время выполнения не должно поддерживать отладку.

Поэтому я попытался вручную поместить нужную библиотеку в /opt/jre/lib контейнера. Я скопировал libjdwp.so из linux vm с OpenJDK 11 и поместил его в свой контейнер, используя:

ADD libjdwp.so /opt/jre/lib/

Это вызвало сбой при запуске:

# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x0000000000001e66, pid=1, tid=6
#
# JRE version: OpenJDK Runtime Environment (Zulu11.33+15-CA) (11.0.4+11) (build 11.0.4+11-LTS)
# Java VM: OpenJDK 64-Bit Server VM (11.0.4+11-LTS, mixed mode, tiered, compressed oops, g1 gc, linux-amd64)
# Problematic frame:
# C  0x0000000000001e66

Кто-нибудь понялсогласованный способ предоставления jdwp для виртуальной машины Java начался с jlink?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...