1

我设法为我的 springboot fat jar 构建了 native-image,但是java.lang.NoSuchMethodException: com.my.passgenerator.PassGeneratorApplication.<init>()当我运行它时它会抛出异常:“”。我试图添加一个默认构造和一个空的 init() 方法,但都失败了。如何克服此异常并运行此本机映像?

以下是完整的日志:

    [root@hostserver pass-generator]# mvn -Pstg clean package -Dmaven.test.skip=true
    [INFO] 正在扫描项目...
    [警告]
    [警告] 在为 com.sensetime.intersense:pass-generator:jar:0.0.1-stg-SNAPSHOT 构建有效模型时遇到了一些问题
    [警告] 'version' 包含一个表达式,但应该是一个常量。@ com.sensetime.intersense:pass-generator:0.0.1-${target.env}-SNAPSHOT,/tmp/pass-generator/pom.xml,第 47 行,第 11 列
    [警告]
    [警告] 强烈建议修复这些问题,因为它们会威胁您构建的稳定性。
    [警告]
    [警告] 出于这个原因,未来的 Maven 版本可能不再支持构建此类格式错误的项目。
    [警告]
    [信息]                                                                         
    [信息] --------------------------------------------- -------------------------
    [INFO] 构建 pass-generator 0.0.1-stg-SNAPSHOT
    [信息] --------------------------------------------- -------------------------
    [信息]
    [信息] --- maven-clean-plugin:3.1.0:clean (default-clean) @ pass-generator ---
    [信息] 删除 /tmp/pass-generator/target
    [信息]
    [INFO] --- maven-resources-plugin:3.1.0:resources (default-resources) @ pass-generator ---
    [INFO] 使用 'UTF-8' 编码复制过滤的资源。
    [INFO] 复制 1 个资源
    [INFO] 复制 1 个资源
    [信息]
    [INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ pass-generator ---
    [INFO] 检测到更改 - 重新编译模块!
    [INFO] 编译 10 个源文件到 /tmp/pass-generator/target/classes
    [信息]
    [INFO] --- maven-antrun-plugin:1.8:run (默认)@ pass-generator ---
    [INFO] 执行任务

    主要的:
         [copy] 将 3 个文件复制到 /tmp/pass-generator/target/classes/refs
         [copy] 将5个空目录复制到/tmp/pass-generator/target/classes/refs下1个空目录
         [复制] 复制 1 个文件到 /tmp/pass-generator/target/classes
         [复制] 警告:找不到要复制的文件 /tmp/pass-generator/target/classes/application-stg.yml。
         [复制] 警告:找不到要复制的文件 /tmp/pass-generator/target/classes/bootstrap-stg.yml。
         [复制] 警告:找不到要复制的文件 /tmp/pass-generator/target/classes/application-stg.yaml。
         [复制] 警告:找不到要复制的文件 /tmp/pass-generator/target/classes/config-stg.properties。
    [INFO] 执行的任务
    [信息]
    [信息] --- maven-resources-plugin:3.1.0:testResources (default-testResources) @ pass-generator ---
    [INFO] 不复制测试资源
    [信息]
    [信息] --- maven-compiler-plugin:3.8.1:testCompile (default-testCompile) @ pass-generator ---
    [INFO] 不编译测试源
    [信息]
    [信息] --- maven-surefire-plugin:2.22.2:test (default-test) @ pass-generator ---
    [INFO] 测试被跳过。
    [信息]
    [INFO] --- maven-jar-plugin:3.2.0:jar (default-jar) @ pass-generator ---
    [信息] 构建 jar:/tmp/pass-generator/target/pass-generator-0.0.1-stg-SNAPSHOT.jar
    [信息]
    [INFO] --- native-image-maven-plugin:20.1.0:native-image (默认)@ pass-generator ---
    [INFO] ImageClasspath 入口:org.springframework.boot:spring-boot-starter:jar:2.3.0.RELEASE:compile (file:///root/.m2/repository/org/springframework/boot/spring-boot-启动器/2.3.0.RELEASE/spring-boot-starter-2.3.0.RELEASE.jar)
    [INFO] ImageClasspath 入口:org.springframework.boot:spring-boot:jar:2.3.0.RELEASE:compile (file:///root/.m2/repository/org/springframework/boot/spring-boot/2.​​3. 0.RELEASE/spring-boot-2.3.0.RELEASE.jar)
    [INFO] ImageClasspath 入口:org.springframework:spring-context:jar:5.2.6.RELEASE:compile (file:///root/.m2/repository/org/springframework/spring-context/5.2.6.RELEASE/ spring-context-5.2.6.RELEASE.jar)
    [INFO] ImageClasspath 入口:org.springframework:spring-aop:jar:5.2.6.RELEASE:compile (file:///root/.m2/repository/org/springframework/spring-aop/5.2.6.RELEASE/ spring-aop-5.2.6.RELEASE.jar)
    [INFO] ImageClasspath 入口:org.springframework:spring-beans:jar:5.2.6.RELEASE:compile (file:///root/.m2/repository/org/springframework/spring-beans/5.2.6.RELEASE/ spring-beans-5.2.6.RELEASE.jar)
    [INFO] ImageClasspath 入口:org.springframework:spring-expression:jar:5.2.6.RELEASE:compile (file:///root/.m2/repository/org/springframework/spring-expression/5.2.6.RELEASE/ spring-expression-5.2.6.RELEASE.jar)
    [INFO] ImageClasspath 入口:org.springframework.boot:spring-boot-autoconfigure:jar:2.3.0.RELEASE:compile (file:///root/.m2/repository/org/springframework/boot/spring-boot-自动配置/2.3.0.RELEASE/spring-boot-autoconfigure-2.3.0.RELEASE.jar)
    [INFO] ImageClasspath 条目:jakarta.annotation:jakarta.annotation-api:jar:1.3.5:compile (file:///root/.m2/repository/jakarta/annotation/jakarta.annotation-api/1.3.5/ jakarta.annotation-api-1.3.5.jar)
    [INFO] ImageClasspath 入口:org.springframework:spring-core:jar:5.2.6.RELEASE:compile (file:///root/.m2/repository/org/springframework/spring-core/5.2.6.RELEASE/ spring-core-5.2.6.RELEASE.jar)
    [INFO] ImageClasspath 入口:org.springframework:spring-jcl:jar:5.2.6.RELEASE:compile (file:///root/.m2/repository/org/springframework/spring-jcl/5.2.6.RELEASE/ spring-jcl-5.2.6.RELEASE.jar)
    [INFO] ImageClasspath 条目:org.yaml:snakeyaml:jar:1.26:compile (file:///root/.m2/repository/org/yaml/snakeyaml/1.26/snakeyaml-1.26.jar)
    [INFO] ImageClasspath 条目:org.projectlombok:lombok:jar:1.18.0:compile (file:///root/.m2/repository/org/projectlombok/lombok/1.18.0/lombok-1.18.0.jar)
    [INFO] ImageClasspath 入口:org.springframework.boot:spring-boot-configuration-processor:jar:2.3.0.RELEASE:compile (file:///root/.m2/repository/org/springframework/boot/spring- boot-configuration-processor/2.3.0.RELEASE/spring-boot-configuration-processor-2.3.0.RELEASE.jar)
    [INFO] ImageClasspath 条目:org.apache.commons:commons-lang3:jar:3.7:compile (file:///root/.m2/repository/org/apache/commons/commons-lang3/3.7/commons-lang3- 3.7.jar)
    [INFO] ImageClasspath 入口:org.springframework.boot:spring-boot-starter-logging:jar:2.3.0.RELEASE:compile (file:///root/.m2/repository/org/springframework/boot/spring- boot-starter-logging/2.3.0.RELEASE/spring-boot-starter-logging-2.3.0.RELEASE.jar)
    [INFO] ImageClasspath 条目:ch.qos.logback:logback-classic:jar:1.2.3:compile (file:///root/.m2/repository/ch/qos/logback/logback-classic/1.2.3/ logback-classic-1.2.3.jar)
    [INFO] ImageClasspath 条目:ch.qos.logback:logback-core:jar:1.2.3:compile (file:///root/.m2/repository/ch/qos/logback/logback-core/1.2.3/ logback-core-1.2.3.jar)
    [INFO] ImageClasspath 条目:org.slf4j:slf4j-api:jar:1.7.30:compile (file:///root/.m2/repository/org/slf4j/slf4j-api/1.7.30/slf4j-api- 1.7.30.jar)
    [INFO] ImageClasspath 条目:org.apache.logging.log4j:log4j-to-slf4j:jar:2.13.2:compile (file:///root/.m2/repository/org/apache/logging/log4j/log4j- to-slf4j/2.13.2/log4j-to-slf4j-2.13.2.jar)
    [INFO] ImageClasspath 条目:org.apache.logging.log4j:log4j-api:jar:2.13.2:compile (file:///root/.m2/repository/org/apache/logging/log4j/log4j-api/ 2.13.2/log4j-api-2.13.2.jar)
    [INFO] ImageClasspath 条目:org.slf4j:jul-to-slf4j:jar:1.7.30:compile (file:///root/.m2/repository/org/slf4j/jul-to-slf4j/1.7.30/七月到 slf4j-1.7.30.jar)
    [INFO] ImageClasspath 条目:org.jasypt:jasypt:jar:1.9.2:compile (file:///root/.m2/repository/org/jasypt/jasypt/1.9.2/jasypt-1.9.2.jar)
    [INFO] ImageClasspath 条目:com.github.ulisesbocchio:jasypt-spring-boot:jar:2.0.0:compile (file:///root/.m2/repository/com/github/ulisesbocchio/jasypt-spring-boot/ 2.0.0/jasypt-spring-boot-2.0.0.jar)
    [INFO] ImageClasspath 入口:org.springframework.experimental:spring-graalvm-native:jar:0.7.0:compile (file:///root/.m2/repository/org/springframework/experimental/spring-graalvm-native/ 0.7.0/spring-graalvm-native-0.7.0.jar)
    [警告] jar:file:///root/.m2/repository/org/springframework/experimental/spring-graalvm-native/0.7.0/spring-graalvm-native-0.7.0.jar!/META-INF/ native-image/org.springframework.experimental/spring-graal-native/native-image.properties 与推荐的 META-INF/native-image/${groupId}/${artifactId}/native-image.properties 布局不匹配。
    [INFO] ImageClasspath 条目:com.sensetime.intersense:pass-generator:jar:0.0.1-stg-SNAPSHOT (file:///tmp/pass-generator/target/pass-generator-0.0.1-stg-SNAPSHOT 。罐)
    [信息] 执行:/root/graalvm-ce-java8-20.1.0/jre/bin/native-image -cp /root/.m2/repository/org/springframework/boot/spring-boot-starter/2.3.0 .RELEASE/spring-boot-starter-2.3.0.RELEASE.jar:/root/.m2/repository/org/springframework/boot/spring-boot/2.​​3.0.RELEASE/spring-boot-2.3.0.RELEASE .jar:/root/.m2/repository/org/springframework/spring-context/5.2.6.RELEASE/spring-context-5.2.6.RELEASE.jar:/root/.m2/repository/org/springframework/spring -aop/5.2.6.RELEASE/spring-aop-5.2.6.RELEASE.jar:/root/.m2/repository/org/springframework/spring-beans/5.2.6.RELEASE/spring-beans-5.2.6 .RELEASE.jar:/root/.m2/repository/org/springframework/spring-expression/5.2.6.RELEASE/spring-expression-5.2.6.RELEASE.jar:/root/.m2/repository/org/springframework /boot/spring-boot-autoconfigure/2.3.0.RELEASE/spring-boot-autoconfigure-2.3.0.RELEASE.jar:/root/。m2/repository/jakarta/annotation/jakarta.annotation-api/1.3.5/jakarta.annotation-api-1.3.5.jar:/root/.m2/repository/org/springframework/spring-core/5.2.6。 RELEASE/spring-core-5.2.6.RELEASE.jar:/root/.m2/repository/org/springframework/spring-jcl/5.2.6.RELEASE/spring-jcl-5.2.6.RELEASE.jar:/root /.m2/repository/org/yaml/snakeyaml/1.26/snakeyaml-1.26.jar:/root/.m2/repository/org/projectlombok/lombok/1.18.0/lombok-1.18.0.jar:/root/。 m2/repository/org/springframework/boot/spring-boot-configuration-processor/2.3.0.RELEASE/spring-boot-configuration-processor-2.3.0.RELEASE.jar:/root/.m2/repository/org/ apache/commons/commons-lang3/3.7/commons-lang3-3.7.jar:/root/.m2/repository/org/springframework/boot/spring-boot-starter-logging/2.3.0.RELEASE/spring-boot- starter-logging-2.3.0.RELEASE.jar:/root/.m2/repository/ch/qos/logback/logback-classic/1.2。3/logback-classic-1.2.3.jar:/root/.m2/repository/ch/qos/logback/logback-core/1.2.3/logback-core-1.2.3.jar:/root/.m2/存储库/org/slf4j/slf4j-api/1.7.30/slf4j-api-1.7.30.jar:/root/.m2/repository/org/apache/logging/log4j/log4j-to-slf4j/2.13.2/ log4j-to-slf4j-2.13.2.jar:/root/.m2/repository/org/apache/logging/log4j/log4j-api/2.13.2/log4j-api-2.13.2.jar:/root/。 m2/repository/org/slf4j/jul-to-slf4j/1.7.30/jul-to-slf4j-1.7.30.jar:/root/.m2/repository/org/jasypt/jasypt/1.9.2/jasypt- 1.9.2.jar:/root/.m2/repository/com/github/ulisesbocchio/jasypt-spring-boot/2.​​0.0/jasypt-spring-boot-2.0.0.jar:/root/.m2/repository/ org/springframework/experimental/spring-graalvm-native/0.7.0/spring-graalvm-native-0.7.0.jar:/tmp/pass-generator/target/pass-generator-0.0.1-stg-SNAPSHOT.jar --allow-incomplete-classpath --no-fallback -H:+ReportExceptionStackTraces --initialize-at-build-time=org.springframework.util.unit.DataSize -H:+TraceClassInitialization --no-server -R:MaxHeapSize=16g -J-Xmx16G -H:Class=com.my。 passgenerator.PassGeneratorApplication
    [com.my.passgenerator.passgeneratorapplication:1026375] 类列表:3,609.05 毫秒,1.63 GB
     ____ _ _____ _                  
    /___| _ __ _ __(_)_ __ __ _ | ___|__ __ _| |_ _ _ _ __ ___
    \___ \| '_ \| '__| | '_ \ / _` | | |_ / _ \/ _` | __| | | | '__/ _ \
     ___) | |_) | | | | | | | (_| | | _| __/ (_| | |_| |_| | | | __/
    |____/| .__/|_| |_|_| |_|\__, | |_| \___|\__,_|\__|\__,_|_| \___|
          |_| |___/                                     

    在 FEATURE 模式下运行的功能
    删除未使用的配置
    在 native-image 调用上使用 -Dspring.native.verbose=true 以查看该功能的更多详细信息
    [com.my.passgenerator.passgeneratorapplication:1026375](上限):872.48 毫秒,1.63 GB
    在静态反射列表中找到 #6 个类型进行注册
    跳过不在类路径上的 #6 类型
    尝试注册 #19 代理
    跳过 #17 代理的注册 - 相关类型不在类路径中
    [com.my.passgenerator.passgeneratorapplication:1026375] 设置:2,094.23 毫秒,1.63 GB
    注册资源 - #35 模式
    注册资源 - #2 捆绑包
    正在处理 META-INF/spring.factories 文件...
    spring.factories 处理,添加对关键 org.springframework.boot.diagnostics.analyzer.ValidationExceptionFailureAnalyzer 的访问的问题:javax/validation/ValidationException
    处理 spring.factories - ApplicationListener 列出 #10 应用程序侦听器
    处理 spring.factories - PropertySourceLoader 列出了#2 属性源加载器
    spring.factories 处理,添加对关键 org.springframework.boot.autoconfigure.jdbc.HikariDriverConfigurationFailureAnalyzer 的访问的问题:org/springframework/jdbc/CannotGetJdbcConnectionException
    处理 spring.factories - ApplicationListener 列出 #0 应用程序侦听器
    处理 spring.factories - EnableAutoConfiguration 列出 #127 配置
    从 spring.factories 文件中排除 115 个自动配置
    处理 spring.factories - ApplicationListener 列出 #1 应用程序侦听器
    处理 spring.factories - ApplicationListener 列出 #1 应用程序侦听器
    找不到 META-INF/spring.components -> 正在合成一个...
    计算的 spring.components 是
    vvv
    ^^^
    已注册 0 个条目
    为特定类型和包配置初始化时间:
    #87 buildtime-init-classes #23 buildtime-init-packages #33 runtime-init-classes #1 runtime-init-packages

    警告:类 org.springframework.boot.validation.MessageInterpolatorFactory 的类初始化失败,出现异常 java.lang.NoClassDefFoundError: javax/validation/ValidationException。此类将在运行时初始化,因为选项 --allow-incomplete-classpath 用于图像构建。使用选项 --initialize-at-run-time=org.springframework.boot.validation.MessageInterpolatorFactory 显式请求此类的延迟初始化。
    为反射访问动态注册的类型数:#856
    [com.my.passgenerator.passgeneratorapplication:1026375] (clinit):503.31 毫秒,4.40 GB
    [com.my.passgenerator.passgeneratorapplication:1026375](类型流):10,414.71 毫秒,4.40 GB
    [com.my.passgenerator.passgeneratorapplication:1026375](对象):11,721.04 毫秒,4.40 GB
    [com.my.passgenerator.passgeneratorapplication:1026375](功能):2,246.52 毫秒,4.40 GB
    [com.my.passgenerator.passgeneratorapplication:1026375] 分析:25,801.80 毫秒,4.40 GB
    [com.my.passgenerator.passgeneratorapplication:1026375] 宇宙:815.05 毫秒,4.40 GB
    [com.my.passgenerator.passgeneratorapplication:1026375](解析):1,752.35 毫秒,4.40 GB
    [com.my.passgenerator.passgeneratorapplication:1026375](内联):1,700.91 毫秒,5.03 GB
    [com.my.passgenerator.passgeneratorapplication:1026375](编译):15,841.57 毫秒,7.29 GB
    [com.my.passgenerator.passgeneratorapplication:1026375] 编译:20,640.83 毫秒,7.29 GB
    [com.my.passgenerator.passgeneratorapplication:1026375] 图像:2,280.36 毫秒,7.31 GB
    [com.my.passgenerator.passgeneratorapplication:1026375] 写入:373.32 毫秒,7.31 GB
    [com.my.passgenerator.passgeneratorapplication:1026375] [总计]:61,399.55 毫秒,7.31 GB
    [信息]
    [INFO] --- spring-boot-maven-plugin:2.3.0.RELEASE:repackage (repackage) @ pass-generator ---
    [INFO] 用重新打包的存档替换主要工件
    [信息] --------------------------------------------- -------------------------
    [信息] 构建成功
    [信息] --------------------------------------------- -------------------------
    [INFO] 总时间:01:04 分钟
    [INFO] 完成时间:2020-06-13T16:54:19+08:00
    [INFO] 最终内存:49M/1304M
    [信息] --------------------------------------------- -------------------------
    您在 /var/spool/mail/root 中有新邮件
    [root@hostserver pass-generator]# ./target/com.my.passgenerator.passgeneratorapplication
    2020-06-13 16:54:32.506 错误 1030001 --- [main] osboot.SpringApplication:应用程序运行失败

    org.springframework.beans.factory.BeanCreationException:创建名为“passGeneratorApplication”的bean时出错:bean实例化失败;嵌套异常是 org.springframework.beans.BeanInstantiationException:无法实例化 [com.my.passgenerator.PassGeneratorApplication]:未找到默认构造函数;嵌套异常是 java.lang.NoSuchMethodException: com.my.passgenerator.PassGeneratorApplication.()
        在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1320) ~[na:na]
        在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1214) ~[na:na]
        在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:557) ~[na:na]
        在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517) ~[na:na]
        在 org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323) ~[na:na]
        在 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:226) ~[na:na]
        在 org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321) ~[na:na]
        在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[na:na]
        在 org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:895) ~[na:na]
        在 org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:878) ~[na:na]
        在 org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550) ~[na:na]
        在 org.springframework.boot.SpringApplication.refresh(SpringApplication.java:758) ~[com.my.passgenerator.passgeneratorapplication:na]
        在 org.springframework.boot.SpringApplication.refresh(SpringApplication.java:750) ~[com.my.passgenerator.passgeneratorapplication:na]
        在 org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) ~[com.my.passgenerator.passgeneratorapplication:na]
        在 org.springframework.boot.SpringApplication.run(SpringApplication.java:315) ~[com.my.passgenerator.passgeneratorapplication:na]
        在 org.springframework.boot.SpringApplication.run(SpringApplication.java:1237) ~[com.my.passgenerator.passgeneratorapplication:na]
        在 org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) ~[com.my.passgenerator.passgeneratorapplication:na]
        在 com.my.passgenerator.PassGeneratorApplication.main(PassGeneratorApplication.java:29) [com.my.passgenerator.passgeneratorapplication:na]
    原因:org.springframework.beans.BeanInstantiationException:无法实例化[com.my.passgenerator.PassGeneratorApplication]:未找到默认构造函数;嵌套异常是 java.lang.NoSuchMethodException: com.my.passgenerator.PassGeneratorApplication.()
        在 org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:83) ~[na:na]
        在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1312) ~[na:na]
        ...省略了17个常用框架
    引起:java.lang.NoSuchMethodException: com.my.passgenerator.PassGeneratorApplication.()
        在 java.lang.Class.getConstructor0(DynamicHub.java:3082) ~[na:na]
        在 java.lang.Class.getDeclaredConstructor(DynamicHub.java:2178) ~[na:na]
        在 org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:78) ~[na:na]
        ...省略了18个常用框架

4

1 回答 1

2

compile.sh从脚本构建方法切换到本答案中描述的 native-image-maven-plugin时,我遇到了同样的错误。这里的关键错误是No default constructor found消息,问题发生在 Spring Feature 在native-image-maven-plugin执行内部工作时:

Found no META-INF/spring.components -> synthesizing one...
    Computed spring.components is 
    vvv
    ^^^
    Registered 0 entries
    Configuring initialization time for specific types and packages:
    #87 buildtime-init-classes   #23 buildtime-init-packages   #33 runtime-init-classes 

Spring 严重依赖于运行时的类路径扫描,通常可以在其中找到您的@SpringBootApplication或带注释的组件。@Component但是让 Spring 应用程序与 GraalVM Native Image 一起工作是一个很大的挑战,因为这里不再可能进行运行时类路径扫描。

Spring Feature spring-graalvm-native因此尝试处理META-INF/spring.components文件或在内存中计算。后者现在不能使用native-image-maven-plugin工作。要解决此问题,您需要在 pom.xml 中向spring-context-indexer添加显式依赖项(请参阅此处的完整示例):

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context-indexer</artifactId>
    </dependency>

当前的Spring Feature 文档还告诉我们应该使用的这种依赖关系。如果你添加spring-context-indexer到你的pom.xml,它将创建一个target/classes/META_INF/spring.components包含你的@SpringBootApplication注释类的文件:

com.my.passgenerator.PassGeneratorApplication=org.springframework.stereotype.Component

此外,您的构建输出应说明该文件已被处理,并且已像这样注册了一个条目:

Processing META-INF/spring.components files...
Registered 1 entries
Configuring initialization time for specific types and packages:
#87 buildtime-init-classes   #23 buildtime-init-packages   #33 runtime-init-classes

如果您添加更多@Component带注释的类,该文件也将包含它们,并且还将在native-image构建过程中注册。成功构建 Maven 后,您的 Spring Boot 原生应用程序应按预期启动。有关更多信息,您还可以查看有关使用 native-image-maven-plugin for Spring Boot GraalVM Native Image builds 的博客文章

于 2020-06-15T07:05:22.223 回答