Java AOT не работает из-за log4j.core.lookup.JndiLookupJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Java AOT не работает из-за log4j.core.lookup.JndiLookup

Сообщение Anonymous »

Хорошо, я некоторое время пытался добавить компиляцию AOT в Spring-Boot 4.0.2 и Java 25 (пробовал как с GraalVM, так и с Amazon Corretto), и независимо от используемой виртуальной машины я, похоже, столкнулся с этой проблемой:

Код: Выделить всё

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (method.cpp:1926), pid=38004, tid=6132
#  fatal error: no original bytecode found in org.apache.logging.log4j.core.lookup.JndiLookup.lookup(Lorg/apache/logging/log4j/core/LogEvent;Ljava/lang/String;)Ljava/lang/String; at bci 0
#
# JRE version: OpenJDK Runtime Environment Corretto-25.0.2.10.1 (25.0.2+10) (build 25.0.2+10-LTS)
# Java VM: OpenJDK 64-Bit Server VM Corretto-25.0.2.10.1 (25.0.2+10-LTS, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, windows-amd64)
# Problematic frame:
# V  [jvm.dll+0x7587ae]
#
# No core dump will be written. Minidumps are not enabled by default on client versions of Windows
#
# An error report file with more information is saved as:
# C:\mypath\my-rest-service\target\application\hs_err_pid38004.log
#
# If you would like to submit a bug report, please visit:
#   https://github.com/corretto/corretto-25/issues/
#
[114.085s][error  ][aot] Child process failed; status = 1

Я здесь совершенно в растерянности.
Я использую log4j-core:2.53.3 и следую собственной документации Spring, как указано в ссылке в конце этого вопроса.
Я извлекаю файл jar с помощью следующей команды:

Код: Выделить всё

java -Djarmode=tools -jar my-rest-service.jar extract --destination application
А затем я выполняю пробный запуск с помощью следующей команды:

Код: Выделить всё

java -XX:AOTCacheOutput=my-rest-service.aot -Dspring.context.exit=onRefresh -jar my-rest-service.jar
К моменту получения ошибки у меня уже есть файл my-rest-service.aot.config, так что первый шаг успешен (хотя и с большим количеством предупреждений). Он терпит неудачу, когда порождает дочерний процесс, который использует файл .config для создания файла aot. Повторный запуск этого конкретного дочернего процесса с помощью следующей командной строки приводит к той же ошибке:

Код: Выделить всё

java -Djava.class.path=my-rest-service.jar -Dspring.context.exit=onRefresh -XX:AOTCacheOutput=my-rest-service.aot -XX:AOTConfiguration=my-rest-service.aot.config -XX:AOTMode=create
Я попытался бегло просмотреть какой-нибудь соответствующий файл cpp, представленный поиском Google, но C++ не моя сильная сторона, и в любом случае он слишком продвинутый.
Кто-нибудь знает, что означает ошибка «исходный байт-код не найден»?
https://android.googlesource.com/platfo ... method.cpp
https://docs.spring.io/spring-boot/refe ... cache.html

Подробнее здесь: https://stackoverflow.com/questions/798 ... jndilookup
Ответить

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

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

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

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

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