Grails 4: Micronaut не работает с NoClassDefFoundError: javax/annotation/PreDestroy
Я перенес приложение Grails 3.3.10 в Grails 4.0.0, переместившись с Java 8 на OpenJDK 11. После некоторой работы по запуску тестов и приложения в моей среде разработки (на компьютере с Windows 10) я упаковал свою исполняемую войну в докер adoptopenjdk/openjdk11:alpine
, Точка входа докера просто запускает приложение:
java <some options> -jar /app/application.war
Однако докер при запуске выдает ошибку при инициализации Micronaut:
java.util.ServiceConfigurationError: Ошибка загрузки службы [org.grails.databinding.converters.$DefaultConvertersConfigurationDefinitionClass]: javax/annotation/PreDestroy
в io.micronaut.core.io.service.DefaultServiceDefinition.lambda $ load $ 0 (DefaultServiceDefinition.java:71)
...
Вызывается: java.lang.NoClassDefFoundError: javax / annotation / PreDestroy
...
Вызывается: java.lang.ClassNotFoundException: javax.annotation.PreDestroy
Я пытался добавить compile 'javax.annotation:javax.annotation-api:1.3.2'
в моих зависимостях без успеха.
Чего не хватает для запуска моего приложения?
1 ответ
Java 11 больше не поставляется с некоторыми библиотеками javax.
Следуя инструкции https://blog.codefx.org/java/java-11-migration-guide/, эта проблема решена.