首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >尝试使用docker运行jar时出现"Unable to access jarfile“(无法访问jarfile

尝试使用docker运行jar时出现"Unable to access jarfile“(无法访问jarfile
EN

Stack Overflow用户
提问于 2017-04-30 06:28:02
回答 3查看 5.1K关注 0票数 3

当我尝试运行我的jar时,我得到Error: Unable to access jarfile jar-runner.jar

Dockerfile:

代码语言:javascript
运行
复制
FROM anapsix/alpine-java
MAINTAINER bramhaag
CMD ["java", "-jar", "jar-runner.jar", "some param", "some param"]

jar文件位于/home/selfbot/中,我正在使用Portainer运行此文件。这是我的Portainer容器的样子:

我该怎么做呢?

EN

回答 3

Stack Overflow用户

发布于 2019-01-25 01:13:15

通过CMD [ ] "exec“格式,Docker将尝试查看这些论点,并就其有用性给出自己的看法。"Unable to access jarfile“是一条Docker消息,它只是意味着Docker有一些(未指明的) jarfile问题。例如,当jarfile的名称包含ENV变量时,我就遇到过这种情况。显然,Docker无法处理这个问题。

还有CMD的“外壳”格式CMD java -jar jar-runner.jar "some param" "some param"。这就是所谓的外壳格式,因为Docker将参数传递给/bin/sh -c。因此,它不会试图猜测这些参数的含义。反过来,sh也不会试图变得聪明。而且java完全能够使用jar-runner.jar

请注意,如果你在jar-runner.jar中有一个打字错误,或者你把它放在了错误的位置,那么Docker的信息可能是正确的。当Docker猜测错误时,shell解决方法非常有用。

票数 1
EN

Stack Overflow用户

发布于 2017-04-30 07:06:19

看起来您已经挂载了卷,因此假设您是正确的,即jar文件可以通过该卷在容器中使用,那么您可能只需要指定它的路径,以便java可以找到它。

代码语言:javascript
运行
复制
CMD ["java", "-jar", "/home/selfbot/jar-runner.jar", "some param", "some param"]

您可以通过运行不同的命令来检查该文件是否真的可用,以便只显示给定目录的内容。将命令(在Portainer中)更改为如下所示

代码语言:javascript
运行
复制
ls -la /home/selfbot

然后,您可以验证jar文件是否确实在您认为的位置,它是否可读,等等。此命令将立即退出,但其输出将在容器日志中可用。

票数 0
EN

Stack Overflow用户

发布于 2018-03-28 07:00:10

试一试

ENTRYPOINT ["java","-jar","jar-runner.jar"] CMD ["some param"]

我在我的帖子中遇到了类似的问题:Error: Unable to access jarfile when running docker container

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43701062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档