【问题标题】:Grails 4: Micronaut fails with NoClassDefFoundError: javax/annotation/PreDestroyGrails 4:Micronaut 因 NoClassDefFoundError 失败:javax/annotation/PreDestroy
【发布时间】:2019-08-06 12:13:36
【问题描述】:

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

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

Docker 在运行时会在初始化 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

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

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

【问题讨论】:

  • “让我的应用程序运行缺少什么?” - 没有看到项目很难说。我无法重现该问题。

标签: grails micronaut grails-4


【解决方案1】:

Java 11 不再附带某些 javax 库。

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

【讨论】:

    猜你喜欢
    • 2023-04-09
    • 1970-01-01
    • 2019-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多