chalice 4 : Micronaut fails with NoClassDefFoundError: javax/annotation/PreDestroy

标签 grails micronaut grails-4

我将 Grails 3.3.10 应用程序迁移到 Grails 4.0.0,从 Java 8 迁移到 OpenJDK 11。经过一些工作以使测试和应用程序在我的开发环境(Windows 10 机器)上运行后,我将可执行的 war 打包在一个 docker adoptopenjdk/openjdk11:alpine . docker 的入口点只是运行应用程序:

java <some options> -jar /app/application.war

但是,运行时的 docker 在初始化 Micronaut 时会出错:

java.util.ServiceConfigurationError: Error loading service [org.grails.databinding.converters.$DefaultConvertersConfigurationDefinitionClass]: javax/annotation/PreDestroy

at io.micronaut.core.io.service.DefaultServiceDefinition.lambda$load$0(DefaultServiceDefinition.java:71)

...

Caused by: java.lang.NoClassDefFoundError: javax/annotation/PreDestroy

...

Caused by: java.lang.ClassNotFoundException: javax.annotation.PreDestroy



我尝试添加 compile 'javax.annotation:javax.annotation-api:1.3.2'在我的 gradle 依赖项中,没有成功。

使我的应用程序运行缺少什么?

最佳答案

Java 11 不再附带一些 javax 库。

遵循https://blog.codefx.org/java/java-11-migration-guide/#Migrating-From-Java-8-To-Java-11 的指示解决了这个问题。

关于 chalice 4 : Micronaut fails with NoClassDefFoundError: javax/annotation/PreDestroy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57375819/

相关文章:

grails - 在数据库中使用默认参数,并在Grails中添加一些动态生成到数据库中的新参数

grails - 如何在 Grails 集成测试中调用服务

grails - 如何获得GrailsRootLoader解析具有绝对路径的资源?

java - 如何从 picocli 命令正确启动 micronaut 网络服务器?

grails - Grails 4.1-升级后URL映射中的静态映射无法正常工作

grails - Grails仅返回实体的ID

java - Mockito 在测试中没有模拟来自 Controller 的功能

grails - grails 4 root的URL映射不起作用

grails - Micronaut 读取超时异常

java - Micronaut Test 模拟 bean 无法注入(inject)值