【问题标题】:How to use -javaagent in SupervisorD如何在 SupervisorD 中使用 -javaagent
【发布时间】:2021-11-28 08:30:55
【问题描述】:

我正在尝试从 Docker 运行 Supervisord,但在使用 -javaagent 参数运行 Java 时遇到问题。它给出了以下错误

Error opening zip file or JAR manifest missing : /usr/apps/executor.jar

如果我简单地省略 -javaagent,它会起作用。

我尝试了以下选项,但仍然出现同样的错误

"-javaagent:/usr/apps/executor.jar" 
-javaagent:"/usr/apps/executor.jar" 

//Supervisor.conf

[supervisord]
nodaemon = true
user = root
loglevel = debug

[program:helloworld]
user = root
directory = /usr/apps
# this one will work
# command = /usr/bin/env java -jar /usr/apps/HelloWorld.jar 
# this one will NOT work
command = /usr/bin/env java -javaagent:"/usr/apps/executor.jar" -jar /usr/apps/HelloWorld.jar
# this one will NOT work
#command = /usr/bin/env java "-javaagent:/usr/apps/executor.jar" -jar /usr/apps/HelloWorld.jar
# this one will NOT work
#command = /usr/bin/env java -javaagent:/usr/apps/executor.jar -jar /usr/apps/HelloWorld.jar

// Docker 文件

FROM openjdk:11
USER root
COPY ./HelloWorld.jar /usr/apps/HelloWorld.jar
CMD ["/usr/bin/supervisord","-n"]

感谢任何帮助以使其正常工作...

【问题讨论】:

  • 您的第一条错误消息涉及dd-java-agent.jar,示例有/usr/apps/executor.jar。哪一个?它实际上在容器中可用吗?
  • 对不起,在发布问题时,我重命名了该部分,但没有重命名所有...更新了问题
  • 好的。您没有显示将 /usr/apps/executor.jar 添加到 docker 容器中的位置。应该已经在openjdk:11 中了吗?如果没有,您需要 COPY 加入。
  • 我没有那个副本。稍后让我尝试一下,如果它解决了问题,我会在这里更新并很乐意接受它作为答案。
  • 完成 :) 很高兴我能帮上忙。

标签: supervisord


【解决方案1】:

(来自cmets。)

打开 zip 文件时出错或缺少 JAR 清单:/usr/apps/executor.jar

表示文件不在容器中,因此无法读取。 (这可以通过例如docker build -t myimage .docker run -it --rm myimage ls -la /usr/apps 进行验证;如果executor.jar 不存在,则它...不存在。)

您需要使用ADDCOPY 命令确保文件确实存在于其中。

【讨论】:

    猜你喜欢
    • 2012-07-15
    • 2015-09-25
    • 1970-01-01
    • 1970-01-01
    • 2021-06-29
    • 2014-04-10
    • 2014-08-21
    • 1970-01-01
    • 2015-03-22
    相关资源
    最近更新 更多