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

Nexus3.34.0 Docker容器内执行jar命令提示command not found如何解决

问题原因

官方Nexus 3.34.0 Docker镜像默认仅预装Java运行环境(JRE),而jar是JDK专属的打包工具,JRE没有集成该命令,因此执行时会抛出找不到命令的错误。

可行解决方案

方案1:构建前临时安装JDK

在执行jar操作的RUN指令前,先安装OpenJDK,操作完成后可以清理安装包减小镜像体积。针对Nexus镜像使用的yum包管理器,命令如下:

# 先安装JDK
RUN microdnf install -y java-11-openjdk-devel && \
    # 执行原有jar操作逻辑
    BASE_JAR=$(find /opt/sonatype/nexus/system/org/sonatype/nexus/nexus-base -name "nexus-base*.jar") && \
    mkdir temp && cd temp && \
    jar -xf $BASE_JAR static/css/nexus-content.css && \
    echo ".nexus-header .product-spec { display:none }" >> static/css/nexus-content.css && \
    jar uf $BASE_JAR static/css/nexus-content.css && \
    cd .. && rm -rf temp && \
    # 卸载JDK并清理缓存,减小镜像体积
    microdnf remove -y java-11-openjdk-devel && \
    microdnf clean all

该方案不需要改动原有操作逻辑,兼容性最好。

方案2:用unzip/zip替代jar命令

jar包本质是zip格式压缩包,可以用系统自带的zip/unzip工具完成解压、重打包操作,不需要额外安装体积更大的JDK:

# 先安装zip/unzip工具,占用空间远小于JDK
RUN microdnf install -y unzip zip && \
    BASE_JAR=$(find /opt/sonatype/nexus/system/org/sonatype/nexus/nexus-base -name "nexus-base*.jar") && \
    mkdir temp && cd temp && \
    # 用unzip替代jar -xf
    unzip $BASE_JAR static/css/nexus-content.css && \
    echo ".nexus-header .product-spec { display:none }" >> static/css/nexus-content.css && \
    # 用zip替代jar uf
    zip -u $BASE_JAR static/css/nexus-content.css && \
    cd .. && rm -rf temp && \
    # 清理工具和缓存
    microdnf remove -y unzip zip && \
    microdnf clean all

该方案构建出来的镜像体积更优,适合对镜像大小有要求的场景。

注意事项

  • 操作完成后建议校验jar包的权限,确保和修改前一致,避免Nexus启动时出现权限不足的问题
  • 如果是离线构建环境,可以提前把依赖的RPM包导入镜像再安装,无需走公网yum源

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 06:51:03