1

我将 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

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

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

4

1 回答 1

1

Java 11 不再附带一些 javax 库。

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

于 2019-08-08T11:00:18.563 回答