Java 如何在没有JRE的情况下在GraalVM中运行Spring Boot

Java 如何在没有JRE的情况下在GraalVM中运行Spring Boot,java,spring,spring-boot,class,graalvm-native-image,Java,Spring,Spring Boot,Class,Graalvm Native Image,我正在尝试使用GraalVM Native运行Spring启动应用程序。成功编译成单个文件后,我可以轻松地运行二进制文件,Spring启动正常启动,但当我尝试在docker内部使用ubuntuimage运行它时(它不包含java,但GraalVM native works中没有JRE的简单HelloWorld),我得到以下错误: Error: No bin/java and no environment variable JAVA_HOME 我已经读到,我可能需要在运行时而不是编译时初始化类(

我正在尝试使用GraalVM Native运行Spring启动应用程序。成功编译成单个文件后,我可以轻松地运行二进制文件,Spring启动正常启动,但当我尝试在docker内部使用
ubuntu
image运行它时(它不包含java,但GraalVM native works中没有JRE的简单HelloWorld),我得到以下错误:

Error: No bin/java and no environment variable JAVA_HOME

我已经读到,我可能需要在运行时而不是编译时初始化类(from:)。但我不知道应该将哪些类传递给
——将类初始化延迟到运行时。没有JRE,我如何运行Spring Boot应用程序

您是如何/在何处将Spring应用程序编译成Graal原生映像的?Docker容器的基本映像(
来自baseimageName
——在您的例子中是
ubuntu
)需要与编译应用程序的基本映像或机器完全匹配,因为该过程创建了一个100%特定于机器(本机)的编译可执行文件。在Docker容器内运行应用程序的最简单方法是在同一容器(或至少在同一个基本映像)内构建应用程序-以此为例。要构建一个完全独立的可执行文件,您需要传递graalvm
--no fallback
arg