简体   繁体   中英

Quarkus Building a Native Executable NoSuchFileException with -Dnative-image.docker-build=true

build fail with

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

i followed 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

both should result the naive image executable.

try this.

move reflection-config.json to

src/main/resources/reflection-config.json

and change pom.xml like this

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM