【问题标题】:Spring-agent: Error opening zip file or JAR manifest missingSpring-agent:打开 zip 文件时出错或缺少 JAR 清单
【发布时间】:2016-10-03 07:45:58
【问题描述】:

我正在尝试使用 Docker 运行应用程序。应用程序是运行在 Tomcat 上的 Java 程序。所以,我正在构建一个图像,我的Dockerfile 看起来像:

FROM tomcat:7.0.72-jre8

COPY Tomcat/ $CATALINA_HOME/

ENV JAVA_OPTS="$JAVA_OPTS -javaagent:$CATALINE_HOME/lib/spring-agent-2.5.6.jar -Xms2048m -Xmx2048m -Dorg.apache.el.parser.SKIP_IDENTIFIER_CHECK=true"

如你所见,我正在使用-javaagent 选项,但它会导致:

Error opening zip file or JAR manifest missing : /lib/spring-agent-2.5.6.jar
Error occurred during initialization of VM
agent library failed to init: instrument

我通过在setenv.sh 中设置JAVA_OPTS 进行了同样的尝试——同样的例外。我确定该库已复制到容器中,并且它存在于指定路径上。我通过在没有javaagentoption 的情况下运行相同的图像来检查它,然后在终端中访问它。 spring-agent 在 lib 文件夹中,所以我有点卡住了。

我是新的 Ubuntu 用户,我猜可能存在任何权限问题等。

有什么建议吗?

【问题讨论】:

    标签: java ubuntu docker


    【解决方案1】:

    正确的方法是让 Docker 构建 jar 文件,而不是传递之前创建的 jar 文件。我是这样做的:https://github.com/glapp/mape/blob/master/Dockerfile

    这可能对您的 Spring 应用有所帮助:https://spring.io/guides/gs/spring-boot-docker/

    【讨论】:

    • 这对 javaagent 问题有何帮助?真的,值得一提,但我认为这不是解决方案。
    • 为什么您认为 javaagent 是问题所在?错误消息指出打开 zip 文件时出现问题或缺少清单文件。您是否已经确定清单文件在您的 jar 文件中?我怀疑这是真正的原因。
    【解决方案2】:

    好吧,问题出在$CATALINA_HOME,因为在调用javaagent 选项时该变量已丢失,因此我找到了临时解决方案来指定/usr/local/tomcat/ 之类的路径,而不是$CATALINA_HOME

    非常出乎意料,就像在我将文件复制到 $CATALINA_HOME 之前的步骤中一样,它可以工作。

    我仍然不会检查这个答案是否正确,因为它看起来不是一个好的解决方案。任何想法仍然赞赏。

    【讨论】:

      猜你喜欢
      • 2017-10-25
      • 1970-01-01
      • 2014-06-25
      • 1970-01-01
      • 1970-01-01
      • 2020-09-05
      • 1970-01-01
      • 1970-01-01
      • 2020-08-13
      相关资源
      最近更新 更多