You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Docker构建成功但运行报错:找不到jar相关命令,请求调试帮助

问题分析与解决方案

嘿,我一眼就揪出你这个问题的元凶了——ENTRYPOINT指令里用了中文全角引号!这才是导致运行报错的核心原因,和相对路径关系不大。

1. 修复ENTRYPOINT的引号问题

你的Dockerfile里这段代码:

ENTRYPOINT [“java”,”-jar”,”/app.jar”]

这里的“”是中文全角双引号,Docker会把整个["java","-jar","/app.jar"]当成一个完整的命令去查找,自然会提示“not found”。把引号换成英文半角的""就好:

ENTRYPOINT ["java","-jar","/app.jar"]

2. 确认Jar文件的存放位置

你用了ADD target/myjar-1.0-SNAPSHOT.jar app.jar,这条指令会把本地target目录下的jar包复制到容器的**根目录(/)**下,并命名为app.jar,所以/app.jar这个绝对路径是完全正确的,不存在相对路径问题。

如果还是担心路径问题,可以在构建后进入容器验证:

# 启动容器并进入交互式shell
docker run --rm -it myjar /bin/sh
# 查看根目录下的文件
ls /

如果能看到app.jar,说明路径没问题。

3. 额外调试小技巧

  • 先在本地手动运行java -jar target/myjar-1.0-SNAPSHOT.jar,确认jar包本身能正常启动,排除代码或依赖问题。
  • 确保执行docker build -t myjar时,是在你的Maven/Gradle项目根目录下(也就是包含target目录的上级目录),不然Docker找不到target里的jar包。

这样应该就能解决你的问题了,赶紧试试吧!

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

火山引擎 最新活动