
[英]Could not find org.springframework.boot:spring-boot-starter-parent:2.4.9.RELEASE
[英]Spring Boot NativeImage compilation fails on: "Could not find target method: private org.springframework.boot.Banner"
我在编译 Spring 启动应用程序时遇到问题。
TL;DR: Error: Could not find target method: private org.springframework.boot.Banner org.springframework.nativex.substitutions.boot.Target_SpringApplicationBannerPrinter.getImageBanner(org.springframework.core.env.Environment)
我在用着:
pom.xml
插件配置:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<image>
<buildpacks>
<buildpack>gcr.io/paketo-buildpacks/bellsoft-liberica:9.10.3</buildpack>
<buildpack>gcr.io/paketo-buildpacks/java-native-image</buildpack>
</buildpacks>
</image>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
.gitlab-ci.yml
:
stages:
- build
build:
stage: build
image:
name: maven:3-eclipse-temurin-17-focal
before_script:
- set -e
- apt-get update
- apt-get -y install wget build-essential zlibc zlib1g zlib1g-dev upx-ucl
- wget -q https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-22.3.1/graalvm-ce-java17-linux-amd64-22.3.1.tar.gz
- tar xzf graalvm-ce-java17-linux-amd64-22.3.1.tar.gz
- mkdir -p /usr/lib/jvm
- mv graalvm-ce-java17-22.3.1 /usr/lib/jvm/graalvm
- export PATH=/usr/lib/jvm/graalvm/bin/:$PATH
- export JAVA_HOME=/usr/lib/jvm/graalvm
- gu install native-image
- java --version
- native-image --version
script:
- ./compile.sh
artifacts:
expire_in: 1 days
paths:
- ${CI_PROJECT_DIR}/target/app-0.0.1-SNAPSHOT.jar
- ${CI_PROJECT_DIR}/target/app
和compile.sh
:
#!/bin/bash
set -e
mvn -Pnative spring-boot:build-image
rm -rf target/native
mkdir -p target/native
cd target/native
jar -xvf ../app-0.0.1-SNAPSHOT.jar
touch META-INF/native-image/argfile
native-image -H:Name=app \
@META-INF/native-image/argfile \
-H:+ReportExceptionStackTraces \
-H:TraceClassInitialization=true \
-H:IncludeResources=".*" \
--initialize-at-build-time=\
com.fasterxml.jackson.annotation.JsonProperty\
,org.slf4j.impl.StaticLoggerBinder\
,org.slf4j.LoggerFactory\
,org.slf4j.simple.SimpleLogger\
,ch.qos.logback.classic.Logger\
,ch.qos.logback.core.spi.AppenderAttachableImpl\
,ch.qos.logback.core.status.StatusBase\
,ch.qos.logback.classic.Level\
,ch.qos.logback.core.status.InfoStatus\
,ch.qos.logback.classic.PatternLayout\
,ch.qos.logback.core.CoreConstants\
,ch.qos.logback.core.pattern.parser.Parser \
-cp .:BOOT-INF/classes:`find BOOT-INF/lib | tr '\n' ':'`
mv app ../
从 JAR 运行时应用程序工作正常。但编译崩溃:
Error: Could not find target method: private org.springframework.boot.Banner org.springframework.nativex.substitutions.boot.Target_SpringApplicationBannerPrinter.getImageBanner(org.springframework.core.env.Environment)
完整 output:
[INFO] [creator] Paketo Buildpack for Native Image 5.8.0
[INFO] [creator] https://github.com/paketo-buildpacks/native-image
[INFO] [creator] Build Configuration:
[INFO] [creator] $BP_BINARY_COMPRESSION_METHOD Compression mechanism used to reduce binary size. Options: `none` (default), `upx` or `gzexe`
[INFO] [creator] $BP_NATIVE_IMAGE true enable native image build
[INFO] [creator] $BP_NATIVE_IMAGE_BUILD_ARGUMENTS arguments to pass to the native-image command
[INFO] [creator] $BP_NATIVE_IMAGE_BUILD_ARGUMENTS_FILE a file with arguments to pass to the native-image command
[INFO] [creator] $BP_NATIVE_IMAGE_BUILT_ARTIFACT the built application artifact explicitly, required if building from a JAR
[INFO] [creator] Native Image: Contributing to layer
[INFO] [creator] Executing native-image -H:+StaticExecutableWithDynamicLibC -H:Name=/layers/paketo-buildpacks_native-image/native-image/cloud.mwapp.app.appApplication -cp /workspace:/workspace/BOOT-INF/classes:/workspace/BOOT-INF/lib/logback-classic-1.4.5.jar:/workspace/BOOT-INF/lib/logback-core-1.4.5.jar:/workspace/BOOT-INF/lib/log4j-to-slf4j-2.19.0.jar:/workspace/BOOT-INF/lib/log4j-api-2.19.0.jar:/workspace/BOOT-INF/lib/jul-to-slf4j-2.0.6.jar:/workspace/BOOT-INF/lib/jakarta.annotation-api-2.1.1.jar:/workspace/BOOT-INF/lib/snakeyaml-1.33.jar:/workspace/BOOT-INF/lib/jackson-databind-2.14.1.jar:/workspace/BOOT-INF/lib/jackson-annotations-2.14.1.jar:/workspace/BOOT-INF/lib/jackson-core-2.14.1.jar:/workspace/BOOT-INF/lib/jackson-datatype-jdk8-2.14.1.jar:/workspace/BOOT-INF/lib/jackson-datatype-jsr310-2.14.1.jar:/workspace/BOOT-INF/lib/jackson-module-parameter-names-2.14.1.jar:/workspace/BOOT-INF/lib/tomcat-embed-core-10.1.5.jar:/workspace/BOOT-INF/lib/tomcat-embed-el-10.1.5.jar:/workspace/BOOT-INF/lib/tomcat-embed-websocket-10.1.5.jar:/workspace/BOOT-INF/lib/spring-web-6.0.4.jar:/workspace/BOOT-INF/lib/spring-beans-6.0.4.jar:/workspace/BOOT-INF/lib/micrometer-observation-1.10.3.jar:/workspace/BOOT-INF/lib/micrometer-commons-1.10.3.jar:/workspace/BOOT-INF/lib/spring-webmvc-6.0.4.jar:/workspace/BOOT-INF/lib/spring-aop-6.0.4.jar:/workspace/BOOT-INF/lib/spring-context-6.0.4.jar:/workspace/BOOT-INF/lib/spring-expression-6.0.4.jar:/workspace/BOOT-INF/lib/slf4j-api-2.0.6.jar:/workspace/BOOT-INF/lib/jakarta.xml.bind-api-4.0.0.jar:/workspace/BOOT-INF/lib/jakarta.activation-api-2.1.1.jar:/workspace/BOOT-INF/lib/spring-core-6.0.4.jar:/workspace/BOOT-INF/lib/spring-jcl-6.0.4.jar:/workspace/BOOT-INF/lib/spring-boot-3.0.2.jar:/workspace/BOOT-INF/lib/spring-boot-autoconfigure-3.0.2.jar:/workspace/BOOT-INF/lib/springdoc-openapi-starter-webmvc-ui-2.0.2.jar:/workspace/BOOT-INF/lib/springdoc-openapi-starter-webmvc-api-2.0.2.jar:/workspace/BOOT-INF/lib/springdoc-openapi-starter-common-2.0.2.jar:/workspace/BOOT-INF/lib/swagger-core-jakarta-2.2.7.jar:/workspace/BOOT-INF/lib/swagger-annotations-jakarta-2.2.7.jar:/workspace/BOOT-INF/lib/swagger-models-jakarta-2.2.7.jar:/workspace/BOOT-INF/lib/swagger-ui-4.15.5.jar:/workspace/BOOT-INF/lib/webjars-locator-core-0.52.jar:/workspace/BOOT-INF/lib/classgraph-4.8.149.jar:/workspace/BOOT-INF/lib/springdoc-openapi-native-1.6.14.jar:/workspace/BOOT-INF/lib/springdoc-openapi-common-1.6.14.jar:/workspace/BOOT-INF/lib/swagger-core-2.2.7.jar:/workspace/BOOT-INF/lib/commons-lang3-3.12.0.jar:/workspace/BOOT-INF/lib/jackson-dataformat-yaml-2.14.1.jar:/workspace/BOOT-INF/lib/swagger-annotations-2.2.7.jar:/workspace/BOOT-INF/lib/swagger-models-2.2.7.jar:/workspace/BOOT-INF/lib/jakarta.validation-api-3.0.2.jar:/workspace/BOOT-INF/lib/spring-native-0.12.1.jar:/workspace/BOOT-INF/lib/spring-boot-jarmode-layertools-3.0.2.jar cloud.mwapp.app.appApplication
[INFO] [creator] ================================================================================
[INFO] [creator] GraalVM Native Image: Generating '/layers/paketo-buildpacks_native-image/native-image/cloud.mwapp.app.appApplication' (static executable)...
[INFO] [creator] ================================================================================
[INFO] [creator]
[INFO] [creator] [1/7] Initializing... (0.0s @ 0.27GB)
[INFO] [creator] Error: Could not find target method: private org.springframework.boot.Banner org.springframework.nativex.substitutions.boot.Target_SpringApplicationBannerPrinter.getImageBanner(org.springframework.core.env.Environment)
[INFO] [creator] Error: Use -H:+ReportExceptionStackTraces to print stacktrace of underlying exception
[INFO] [creator] --------------------------------------------------------------------------------
[INFO] [creator] 0.8s (5.5% of total time) in 8 GCs | Peak RSS: 0.62GB | CPU load: 1.91
[INFO] [creator] ================================================================================
[INFO] [creator] Failed generating '/layers/paketo-buildpacks_native-image/native-image/cloud.mwapp.app.appApplication' after 12.8s.
[INFO] [creator] Error: Image build request failed with exit status 1
[INFO] [creator] unable to invoke layer creator
[INFO] [creator] unable to contribute native-image layer
[INFO] [creator] error running build
[INFO] [creator] exit status 1
[INFO] [creator] ERROR: failed to build: exit status 1
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 02:23 min
[INFO] Finished at: 2023-01-30T12:40:18Z
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:3.0.2:build-image (default-cli) on project app: Execution default-cli of goal org.springframework.boot:spring-boot-maven-plugin:3.0.2:build-image failed: Builder lifecycle 'creator' failed with status code 51 -> [Help 1]
我坚持这一点,无法弄清楚。 有人可以告诉我吗?
org.springframework.nativex.substitutions.boot.Target_SpringApplicationBannerPrinter
class 来自Spring Native 实验项目。 Spring Native 仅兼容 Spring Boot 2.7,不应与 Spring Boot 3.0 一起使用。 Spring Framework 6.0 和 Spring Boot 3.0 内置了GraalVM 本机可执行功能。
从您的应用程序中删除 Spring 本机依赖项并按照 Spring Boot 3 文档进行操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.