无法jar -tvf jar文件

AKS

我有一个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文件坐镇的完整路径,罐子-tvf jacocoagent.jar不会给我以下错误消息。

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启动脚本无法启动,并且会给出关于缺少清单/文件的相同错误消息。

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),看到diff博客上说了diff文件名。我在项目的构建文件夹树中看到的是jacocoagent.jar

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

AKS

回答所有?

  1. :为-javaagent路径XXXXX /jacocoagent.jar(其中XXXXX路径是相对该项目的当前工作区$ PROJECTDIR在摇篮)。因此,如果我给出我当前工作空间位置中jacocoagent.jar的相对路径,则它可以正常工作。Tomcat成功启动。我在使用完整路径时想知道为什么它不起作用(因为它用//不存在)。

我是怎么发现的。一世

echo `pwd`

在Tomcat运行之前使用tomcatStart.sh脚本,它回显了我当前的目录是我的工作区(我在其中签出了项目的代码)。-javaagent的jacocoagent.jar文件是相对的,因此,如果我的项目工作空间中存在somefolder且其中包含jacocoagent.jar,则-javaagent:somefolder / jacocoagent.jar将起作用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章