gpt4 book ai didi

tomcat - 不能 jar -tvf 一个 jar 文件

转载 作者:行者123 更新时间:2023-11-29 00:00:15 29 4
gpt4 key购买 nike

我有一个 jar 文件,文件上的 ls -ltr 显示了有效的文件大小和权限。当我使用 7Zip 打开此文件时,它成功打开并且 .jar 文件也包含一个有效的 MANIFEST.MF 文件。

/home/u100012/koba/Infrastructure/build/tmp/expandedArchives/org.jacoco.agent-0.7.2.201409121644.jar_778m6tp3jrtvcetasufl59dmau/jacocoagent.jar

在此文件上运行 jar -tvf,出现以下错误消息:

PS:如果我运行“jar -tvf/full/path/to/jacocoagent.jar”文件,但如果我将目录更改为 jacocoagent.jar 文件所在的完整路径,就会发生这种情况, jar -tvf jacocoagent.jar NOT 给我以下错误消息。

java.io.FileNotFoundException: \home\u100012\koba\Infrastructure\build\tmp\expandedArchives\org.jacoco.agent-0.7.2.201409121644.jar_778m6tp3jrtvcetasufl59dmau\jacocoagent.jar (The system cannot find the path specified)
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.<init>(ZipFile.java:215)
at java.util.zip.ZipFile.<init>(ZipFile.java:145)
at java.util.zip.ZipFile.<init>(ZipFile.java:116)
at sun.tools.jar.Main.list(Main.java:1004)
at sun.tools.jar.Main.run(Main.java:245)
at sun.tools.jar.Main.main(Main.java:1177)

7Zip 在 .jar 文件的 META-INF/MANIFEST.MF 文件中显示以下内容。

Manifest-Version: 1.0
Premain-Class: org.jacoco.agent.rt.internal_e6e56f0.PreMain
Archiver-Version: Plexus Archiver
Build-Jdk: 1.5.0_22
Built-By: godin
Created-By: Apache Maven
Implementation-Title: JaCoCo Java Agent
Implementation-Version: 0.7.2.201409121644
Implementation-Vendor: Mountainminds GmbH & Co. KG

当我使用上面的 jacocoagent.jar 文件在 Tomcat JVM 中设置 javaagent 以获取 Gradle 中集成测试的 Jacoco 代码覆盖率时,tomcat 启动脚本不会启动并给出关于缺少 list /文件的相同错误消息。

Catalina.out 日志消息说:

Error occurred during initialization of VM
agent library failed to init: instrument
Error opening zip file or JAR manifest missing : /home/u100012/koba/Infrastructure/build/tmp/expandedArchives/org.jacoco.agent-0.7.2.201409121644.jar_778m6tp3jrtvcetasufl59dmau/jacocoagent.jar

我的问题:

  1. 当 7zip 和 ls Unix 命令工作/显示它是一个有效文件时,为什么 jar -tvf 在 jar 文件上失败。这是因为 MANIFEST.MF 文件的 Premain-Class 的第二行与我在工作区中 build/tmp/expandedArchives 文件夹下的值不同吗? Gradle 即时创建该文件夹。 PS:如果我运行 jar -tvf jacocoagent.jar(当我在该文件所在的目录中),则不会出现此错误。

  2. 我需要使用什么代理 jar 文件(jacocoagent.jar 或 jacoco-agent.jar),看到差异博客说差异文件名。我在项目的构建文件夹树中看到的是 jacocoagent.jar

  3. 如何解决此错误消息?

最佳答案

回答所有 ?s

  1. -javaagent:xxxxx/jacocoagent.jar 的路径(其中 xxxxx 路径与项目的当前工作区RELATIVE Gradle 中的 $projectDir)。因此,如果我给出 jacocoagent.jar 从我当前工作区位置的相对路径,那么它工作正常。 Tomcat 启动成功。想知道为什么它不起作用,当我使用完整路径时(因为它采用了//不存在的路径)。

我是怎么发现的。我

echo `pwd`

在 Tomcat 运行之前的 tomcatStart.sh 脚本中,它反射(reflect)了我当前的目录是我的工作区(我在那里检查了项目的代码)。 jacocoagent.jar 文件到 -javaagent 是相对的,所以 -javaagent:somefolder/jacocoagent.jar 将工作,如果我的项目工作区中存在 somefolder 并且包含 jacocoagent.jar。

关于tomcat - 不能 jar -tvf 一个 jar 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26812238/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com