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

如何在Docker容器内执行java -cp命令?运行遇文件不存在错误

问题解决:Docker运行时出现"no such file or directory: unknown"错误

错误原因

你的Dockerfile中ENTRYPOINT采用了数组格式,但把完整的Java命令作为单个字符串元素传入。Docker会将这个完整字符串当作可执行文件去查找,自然找不到对应文件,因此抛出该错误。

修复方案

将ENTRYPOINT的每个命令、选项、参数拆分为数组的独立元素,修改后的Dockerfile如下:

FROM openjdk:8-jre-slim
VOLUME /tmp
ARG JAR_VERSION
EXPOSE 8080
WORKDIR /tmp
COPY xyz/xyz.jar  /tmp/xyz.jar 
COPY xyz/xyz.csv /tmp/xyz.csv
ENTRYPOINT ["java", "-cp", "/tmp/xyz.jar", "-Dloader.main=com.x.y.MainClass", "--spring.profiles.active=dev", "--runId=test", "--tasksFile=/tmp/xyz.csv"]

额外说明

  • 使用数组形式的ENTRYPOINT(exec格式)时,每个命令组件都必须是数组的单独元素,Docker会直接执行指定命令并传递参数。
  • 若使用字符串形式的shell格式,Docker会通过/bin/sh -c包裹执行,但exec格式更适合需要传递信号(比如容器停止时的SIGTERM)的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 22:04:52