2014-03-02 2 views
0

나는 런타임에 다음과 같은 오류가 발생합니다 :NoClassDefFound 오류

Source schemaFile = new StreamSource(XSDreader); 

이는 Xerces에 클래스 인스턴스를 선두가에 : 코드 줄에서

java.lang.NoClassDefFoundError: mf/javax/xml/transform/stream/StreamSource

암호.

  1. 내가 구글 코드에서 안드로이드에 대한 Xerces를 다운로드.
  2. 코드에서 (OK를 컴파일)을 Xerces에 프로젝트
  3. 추가 내 프로젝트 빌드 경로 라이브러리로의 Xerces JAR 파일
  4. 에서 JAR 파일을 수출 이클립스에서 새로운 자바 프로젝트로 코드를 수입 나는 .jar 파일을 검사 mf.javax...

javax...에서 모든 import 라인을 변경하며 예상 경로에있는 클래스 StreamSource를 포함
,Xerces/bin을 클래스 패스 (.class 파일)에 추가하려고 시도했지만 도움이되지 않았습니다.
프로젝트를 정리했으나 도움이되지 않았습니다.
내 프로젝트를 검사하고 Xerces에 프로젝트 VMClassLoader이보다 더 깊이 파고 수없는 클래스를 찾을 수없는 지점에 동일한 JDK 준수 버전 (1.7)

디버깅 된 코드를 사용하고 있어요.

이 시점에서 나는 아이디어가 떨어졌습니다.

+0

Android 프로젝트 및 라이브러리에 사용되는 libs는 JDK 1.6을 사용해야한다고 생각합니다. 1.7로 컴파일 된 Jars 파일은 NoClassDefFoundError의 일반적인 원인입니다. 1.7로 컴파일 된 클래스는 apk 파일로 패키지되지 않습니다. – Leszek

+0

@Lecho 귀하의 제안을 시도했지만 문제가 해결되지 않았습니다. – ilomambo

+1

"내 프로젝트 빌드 경로 라이브러리에 Xerces JAR 파일을 추가했습니다."- Android 개발 용 Eclipse를 사용할 때 다른 JAR과 마찬가지로 JAR을 실행 취소하고'libs /'에 JAR 파일을 넣으십시오. "클래스 패스에 Xerces/bin을 추가하려고했습니다."- 실행 취소합니다. – CommonsWare

답변

0

간단한 해결책은 @CommonsWare가 질문에 대한 설명을 참조하십시오. 그 해결책은 잘 작동하지만, 유일한 문제는 디버깅 할 때 디버거가 코드를 라이브러리에 따라갈 수없고 Eclipse가 소스가 어디에 있는지 지정하는 옵션을 제공하지 않는다는 것입니다.
그래서 몇 번의 시행 착오 끝에 라이브러리 코드를 디버깅 할 수있는 또 다른 해결책을 찾았습니다.

  1. 프로젝트 빌드 경로 구성을 열고 아래에서 라이브러리를 선택

  2. "라이브러리 추가 ..."

    2.1 유형 "사용자 라이브러리"를 선택하고 다음을 클릭합니다. 당신이 원하는대로

    2.2 클릭 "사용자 라이브러리 ..."

    2.3 이름을, 새로운 라이브러리를 추가합니다. 비어 있음으로 생성됩니다.

    2.4 "JAR 파일 추가"를 선택하고 xerces JAR 파일을 찾아 선택하십시오.

    2.5 "원본 첨부 파일"줄을 클릭하고 xerces의 src 폴더를 가리 킵니다.

    2.6 다시 빌드 경로 대화 상자로 돌아갑니다.

  3. "주문 및 내보내기"탭으로 이동하여 새 라이브러리를 선택하십시오.