You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Jib构建Docker镜像时如何配置多个JVM参数?

问题解决:Quarkus Jib构建JVM参数解析错误

问题根源

从构建日志的容器入口点可以看到,你配置的quarkus.jib.jvm-additional-arguments将两个JVM参数打包成了一个带空格的字符串:

Container entrypoint set to [java, -Djava.net.preferIPv4Stack=true, "-XX:InitialRAMPercentage=50 -XX:MaxRAMPercentage=90", -jar, quarkus-run.jar]

Java命令会把这个包含空格的字符串当作单个参数处理,无法识别为有效的JVM选项,进而错误地将其当作要加载的主类名,导致抛出ClassNotFoundException。

而手动Dockerfile使用RedHat base image自带的run-java.sh脚本,该脚本会自动拆分JAVA_OPTS环境变量中的参数,再传递给Java命令,因此不会出现这个问题。

解决方案

方案1:拆分JVM参数为独立项

在application.properties中直接用空格分隔参数,不要加引号:

quarkus.jib.base-jvm-image=registry.access.redhat.com/ubi8/openjdk-17:1.19-1
quarkus.jib.jvm-arguments=-Djava.net.preferIPv4Stack=true
quarkus.jib.jvm-additional-arguments=-XX:InitialRAMPercentage=50 -XX:MaxRAMPercentage=90

Jib会自动将每个参数拆分为入口点的独立元素,最终生成的入口点会是:

[java, -Djava.net.preferIPv4Stack=true, -XX:InitialRAMPercentage=50, -XX:MaxRAMPercentage=90, -jar, quarkus-run.jar]

这样Java就能正确识别每个JVM选项。

如果使用application.yaml,可以更清晰地写成数组形式:

quarkus:
  jib:
    base-jvm-image: registry.access.redhat.com/ubi8/openjdk-17:1.19-1
    jvm-arguments: -Djava.net.preferIPv4Stack=true
    jvm-additional-arguments:
      - "-XX:InitialRAMPercentage=50"
      - "-XX:MaxRAMPercentage=90"

方案2:利用base image的启动脚本(与手动Dockerfile逻辑一致)

通过Jib配置环境变量,复用run-java.sh的参数处理逻辑:

quarkus.jib.base-jvm-image=registry.access.redhat.com/ubi8/openjdk-17:1.19-1
quarkus.jib.environment-variables.JAVA_OPTS=-XX:InitialRAMPercentage=50 -XX:MaxRAMPercentage=90
quarkus.jib.environment-variables.JAVA_OPTS_APPEND=-Djava.net.preferIPv4Stack=true -Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager
quarkus.jib.environment-variables.JAVA_APP_JAR=/deployments/quarkus-run.jar
quarkus.jib.entrypoint=/opt/jboss/container/java/run/run-java.sh

这种方式完全对齐手动Dockerfile的配置,让run-java.sh负责参数的拆分和传递,适配RedHat base image的启动逻辑。

内容的提问来源于stack exchange,提问作者Jonathan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 19:27:47