当前位置: 首页 > 知识库问答 >
问题:

Quarkus使用-Dnative映像构建本机可执行文件NoSuchFileException。docker build=true

史默
2023-03-14

构建失败

mvn package -Pnative -Dnative-image.docker-build=true

我跟着https://quarkus.io/guides/building-native-image-guide#creating-a-container.

mvn package -Pnative -> success

[io.quarkus.creator.phase.nativeimage.NativeImagePhase] Running Quarkus native-image plugin on OpenJDK 64-Bit GraalVM CE 19.2.0
[io.quarkus.creator.phase.nativeimage.NativeImagePhase] /usr/lib/jvm/graalvm-ce-19.2.0/jre/bin/native-image -J-Djava.util.logging.manager=org.jboss.logmanager.LogManager -J-Dio.netty.leakDetection.level=DISABLED -J-Dvertx.disableDnsResolver=true -J-Dio.netty.noUnsafe=true -H:ReflectionConfigurationFiles=/shared_data/quarkus_jaxrs/reflection-config.json -H:ResourceConfigurationFiles=/shared_data/quarkus_jaxrs/resources-config.json --initialize-at-build-time= -H:InitialCollectionPolicy=com.oracle.svm.core.genscavenge.CollectionPolicy$BySpaceAndTime -jar ph-quarkus-jwt-1.0-runner.jar -J-Djava.util.concurrent.ForkJoinPool.common.parallelism=1 -H:FallbackThreshold=0 -H:+ReportExceptionStackTraces -H:+PrintAnalysisCallTree -H:-AddAllCharsets -H:EnableURLProtocols=http,https --enable-all-security-services -H:NativeLinkerOption=-no-pie -H:-SpawnIsolates -H:+JNI --no-server -H:-UseServiceLoaderFeature -H:+StackTrace


mvn package -Pnative -Dnative-image.docker-build=true -> failure

docker run -v /shared_data/quarkus_jaxrs/target:/project:z --rm --user 0:0 quay.io/quarkus/ubi-quarkus-native-image:19.1.1 -J-Djava.util.logging.manager=org.jboss.logmanager.LogManager -J-Dio.netty.leakDetection.level=DISABLED -J-Dvertx.disableDnsResolver=true -J-Dio.netty.noUnsafe=true -H:ReflectionConfigurationFiles=/shared_data/quarkus_jaxrs/reflection-config.json -H:ResourceConfigurationFiles=/shared_data/quarkus_jaxrs/resources-config.json --initialize-at-build-time= -H:InitialCollectionPolicy=com.oracle.svm.core.genscavenge.CollectionPolicy$BySpaceAndTime -jar ph-quarkus-jwt-1.0-runner.jar -J-Djava.util.concurrent.ForkJoinPool.common.parallelism=1 -H:FallbackThreshold=0 -H:+ReportExceptionStackTraces -H:+PrintAnalysisCallTree -H:-AddAllCharsets -H:EnableURLProtocols=http,https --enable-all-security-services -H:-SpawnIsolates -H:+JNI --no-server -H:-UseServiceLoaderFeature -H:+StackTrace
Error: Invalid Path entry /shared_data/quarkus_jaxrs/reflection-config.json
Caused by: java.nio.file.NoSuchFileException: /shared_data/quarkus_jaxrs/reflection-config.json
> mvn package -Pnative -Dnative-image.docker-build=true ( running dockerised way) 
  -> docker run -v /shared_data/quarkus_jaxrs/target:/project .....
  -> 
Error: Invalid Path entry /shared_data/quarkus_jaxrs/reflection-config.json
Caused by: java.nio.file.NoSuchFileException: /shared_data/quarkus_jaxrs/reflection-config.json

> mvn package -Pnative ( running from graal vm locally installed )
  -> /usr/lib/jvm/graalvm-ce-19.2.0/jre/bin/native-image

这两种方法都会产生朴素的图像可执行文件。

共有1个答案

赵正雅
2023-03-14

试试这个。

移动reflection-config.json到

src/main/resources/reflection-config.json

换个pom。像这样的xml

      <plugin>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-maven-plugin</artifactId>
        <version>${quarkus.version}</version>
        <executions>
          <execution>
            <goals>
              <goal>native-image</goal>
            </goals>
            <configuration>
              <enableHttpUrlHandler>true</enableHttpUrlHandler>
              <additionalBuildArgs>
                <additionalBuildArg>-H:ReflectionConfigurationFiles=classes/reflection-config.json</additionalBuildArg>
              </additionalBuildArgs>
            </configuration>
          </execution>
        </executions>
      </plugin>
 类似资料:
  • 我遵循了构建quarkus本机可执行文件的步骤。 1.引导项目: 2.在minishift中使用docker 3.生成包: 失败,错误跟踪如下: 根据要求,树输出如下所示:

  • 我尝试使用docker构建一个Quarkus本机可执行文件,使用以下命令““ Quarkus版本:2.2.1.最终Maven版本:3.8.1Java版本:11

  • 有可能在Java 16下构建本机Quarkus映像吗?没有找到任何操作说明。 不知何故,这应该是可能的,因为Oracle发布了对Java16的GraalVM支持(https://www.graalvm.org/release-notes/21_1/)

  • 我有以下简化设置: 4)应用程序.属性 当我使用本机maven配置文件(mvn clean package-pnative)运行该文件时,我得到: 使用--report-unsupport-elements-at-runtime运行它也没有太大帮助。当我删除MyEntity类时,它在Mac+GRAALVM-CE-Java11-20.0.0上成功地编译为本机可执行文件

  • 在我的项目的根目录中,我发出了以下命令来创建一个特定于我的操作系统的本机可执行文件。有关详细信息,请参阅以下指南 这是输出。 本机映像生成失败,因为构建刚刚挂起。 我选择在主机上安装Graal VM,并选择非基于容器的方法,如下所示。 > ❯ brew安装——cask GRALVM/tap/GRALVM-ce-lts-java11 将Graal VM添加到JEnv管理的Java版本 ❯ jenv

  • 我正在尝试使用Github自托管运行程序为我的qukus应用程序构建原生映像。 这对我来说在Github托管的跑步者上非常有用,但我想在自托管的跑步者上这样做,这样我们就不会浪费Github的预算。 当我更新我的工作流程以使用自我托管的跑步者时,我开始遇到这个奇怪的异常。 我使用的是GraalVM 22.0.0.2、Java 11.0.14、Maven 3.8.4和Quarkus 2.7.5 我尝