2014-11-08 76 views
-1

jar 파일이 있는데 파일에 ls -ltr이 올바른 파일 크기와 사용 권한을 보여줍니다. 7Zip을 사용하여이 파일을 열면 성공적으로 열리고 .jar 파일에는 유효한 MANIFEST.MF 파일도 들어 있습니다.jar 파일을 jar -tvf 할 수 없습니다.

PS : 나는/jacocoagent에/"항아리 -tvf/전체/경로를 실행하는 경우이 문제가 발생이 파일에 -tvf 항아리를 실행하면, 나에게 다음과 같은 오류 메시지를 제공

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

. 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 파일에 다음 내용을 표시합니다. 내가 바람둥이 시작되지 않습니다 스크립트를 시작, Gradle을에서 통합 테스트를 위해 Jacoco 코드 커버리지를 얻기를 위해 톰캣 JVM에서 javaagent를 설정 위의 jacocoagent.jar 파일을 사용하여 누락에 대해 동일한 오류 메시지를 제공하고 있습니다

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 

매니페스트/파일.

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 유닉스 명령어 작품/그것의 표시 할 때 jar 파일에 실패 -tvf 항아리 유효한 파일. 이것은 MANIFEST.MF 파일의 Premain-Class에 대한 두 번째 줄에 build/tmp/expandedArchives 폴더 아래에 내 작업 영역에있는 것과 다른 값이 있기 때문입니까? Gradle은 해당 폴더를 즉시 생성합니다. 추신 : jar -tvf jacocoagent.jar (이 파일이있는 디렉토리에있을 때)를 실행하면이 오류가 발생하지 않습니다.

  2. 어떤 에이전트 jar 파일 (jacocoagent.jar 또는 jacoco-agent.jar)을 사용해야합니까? diff 파일 이름을 말하는 diff 파일을 보았습니다. 프로젝트의 빌드 폴더 트리에 표시되는 것은 jacocoagent.jar입니다.

  3. 이 오류를 해결하는 방법은 무엇입니까? 모든

답변

0

대답의

  1. -javaagent의 경로 : xxxxx는 경로가 프로젝트 $의 현재 작업 공간에 RELATIVE입니다 xxxxx는 /jacocoagent.jar (Gradle의 projectDir). 따라서, 현재 작업 공간 위치에서 jacocoagent.jar의 상대 경로를 제공하면 잘 동작합니다. Tomcat이 성공적으로 시작되었습니다. 왜 그것이 작동하지 않았는지 궁금해 할 때, 전체 경로를 사용했을 때 (존재하지 않았던 //).

어떻게 찾았습니까? I

echo `pwd` 

in tomcatStart.sh 스크립트를 실행하기 직전에 내 현재 디렉토리가 내 작업 공간 (프로젝트 코드를 체크 아웃 한 곳)이었다. jacocoagent.jar 파일은 -javaagent에 상대적입니다. -javaagent : somefolder/jacocoagent.jar은 somefolder가 내 프로젝트 작업 공간에 있고 jacocoagent.jar을 포함하면 작동합니다.