66

2012-12-25 4 views
4

내 응용 프로그램의 CPU를 프로파일 링 VisualVM과를 사용하여, 나는 오류로 실행 JVMTI 오류로 이어지는에서 해당시66

"Profiler Agent Error: with message: Redefinition failed with error 66".

, 복사하기 모든 클래스 파일 응용 프로그램을 시작한 위치의 경로를 작성하십시오.

나는, 오류 코드 수단 (JVMTI-문서에 의하면)이에 대한 몇 가지 정보를 찾기 위해 노력 :

JVMTI_ERROR_UNSUPPORTED_REDEFINITION_HIERARCHY_CHANGED (66)
A direct superclass is different for the new class version, or the set of directly implemented interfaces is different.

프로파일 링은 일반적으로 내 환경에서 작동으로는 (자바 1.7.0_09-B05, 페도라 17를 구축 64 비트). 나는 "-Xshare : off"를 Visualvm-docs에서 말한 것처럼 아무런 효과없이 시도했다.

이 문제가 발생한 Java-SE 응용 프로그램이 유일하므로 사용하고있는 라이브러리와 어떻게 든 관련이있는 것으로 보입니다.

  • 의 log4j 1.2.17
  • 아파치는 OpenJPA 2.2.1
  • 커먼즈 구성 1.9
  • 풍경 수영장 1.6
  • PostgreSQL을 9.1-901jdbc4
  • imgscalr-lib 디렉토리 : 내 클래스 경로에 다음과 같은 -4.2

라이브러리와 오류 간의 상관 관계를 볼 수 있습니까? 나는 정말로 더 이상 생각이 없다.

+0

JPA 구현은 (지연로드와 같은 것을 지원하는 데 필요한) 바이트 코드 도구화를 수행하는 경향이 있습니다. JPA 제공 업체를 전환 해보십시오. – radai

+0

Openjpa는 깊이 내포되어 있으며 (내 정보에서) 관리 대상을 분리/첨부하는 고유 한 처리 때문에 불행히도 전환 할 수 없습니다. – chrisstr

답변

5

JPA가 원인 일 수 있습니다. Profiler 대신 Sampler을 사용할 수 있습니다. 또 다른 가능성은 루트 메소드와 계측 필터를 정의하여 JPA에 의해 계측 된 클래스가 VisualVM에 의해 프로파일되지 않도록하는 것입니다. 프로파일 링 및 프로파일 링 루 트 및 계측 필터를 설정하는 방법에 대한 자세한 정보는 Profiling With VisualVM, Part 1Profiling With VisualVM, Part 2을 참조하십시오.

+0

힌트 - 샘플링을 문제없이 실행 해 주셔서 감사합니다. 사실 (수치 스럽습니다) 필자는 프로파일 링 옵션을 사용할 때 샘플링이하는 일을 항상하고 있다고 생각했습니다. – chrisstr

0

작은 추가 : OpenJPA를 사용하는 응용 프로그램을 프로파일 링 할 때 동일한 오류 메시지가 나타납니다. 오류는 응용 프로그램을 종료하지 않는 한 각 오류 대화 상자에서 "확인"을 클릭하기 만하면 사라집니다.

버튼을 눌러 수집 된 결과를 재설정하고 코드를 다시 실행할 수 있습니다. 예 : 루프에서 실행하고 new Scanner(System.in).nextLine()을 사용하거나 UI에서 버튼 클릭을 통해

+0

참고! 불행히도 JVisualVM은 JPA 엔티티에서 메소드 호출을 직접 표시하지 않습니다. 달성하고자하는 것에 따라 문제가 될 수도 있고 아닐 수도 있습니다. –