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

启动Docker容器时提示Unable to access jarfile的原因咨询

问题原因分析

核心问题出在WORKDIR /tmp指令改变了容器的工作目录,导致Java命令找不到jar文件:

无法正常运行的Dockerfile执行流程拆解

  1. COPY target/vol_demo.jar vol_demo.jar:此时容器默认工作目录是根目录/(openjdk镜像的初始工作目录),所以jar包被复制到了/vol_demo.jar位置。
  2. WORKDIR /tmp:这条指令将容器启动后的默认工作目录切换为/tmp。
  3. ENTRYPOINT ["java", "-jar", "vol_demo.jar"]:执行Java命令时,会在当前工作目录(即/tmp)下查找vol_demo.jar,但jar包实际在根目录/下,自然找不到,因此抛出「Unable to access jarfile」错误。

可正常运行的Dockerfile为什么没问题

该版本没有设置WORKDIR,容器启动后默认工作目录还是根目录/,Java命令能直接找到根目录下的vol_demo.jar,所以可以正常启动。

修复方案(二选一)

  • 方案1:调整COPY指令到WORKDIR之后,让jar包直接复制到/tmp目录
FROM openjdk
ENV filePath=/tmp/test.txt
EXPOSE 8080
RUN mkdir -p /tmp
WORKDIR /tmp
RUN touch /tmp/test.txt
COPY target/vol_demo.jar vol_demo.jar
ENTRYPOINT ["java", "-jar", "vol_demo.jar"]
  • 方案2:在ENTRYPOINT中指定jar包的绝对路径
FROM openjdk
COPY target/vol_demo.jar vol_demo.jar
ENV filePath=/tmp/test.txt
EXPOSE 8080
RUN mkdir -p /tmp
WORKDIR /tmp
RUN touch /tmp/test.txt
ENTRYPOINT ["java", "-jar", "/vol_demo.jar"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 07:32:49