[java] NoClassDefFoundError-Eclipse 및 Android

빌드 경로에 두 번째 외부 라이브러리를 추가 할 때까지 Android 앱을 실행하는 데 문제가 있습니다. scoreninja jar을 추가 한 후 앱을 실행하려고 하면 NoClassDefFoundError가 발생합니다.

메시지는 다음과 같습니다.

02-11 21:45:26.154: ERROR/AndroidRuntime(3654): java.lang.NoClassDefFoundError: com.scoreninja.adapter.ScoreNinjaAdapter

모든 빌드 스크립트가 Android 도구 (?)에 의해 생성되므로 Eclipse를 정리하고 다시 작성하거나 다시 시작하는 것 외에 다른 작업을 수행 할 수 있는지 잘 모르겠습니다 (이미 세 가지를 모두 시도했습니다). 누구든지 내가 이것을 어떻게 수정할 수 있는지 알고 있습니까?



답변

ADT를 업데이트 한 후이 문제가 발생했습니다.

모든 JAR 파일을 “lib”라는 폴더에 저장하고 jar를 일반적인 Eclipse 방식으로 빌드 경로에 추가했습니다. 이것은 내 업데이트까지 잘 작동했습니다.

업데이트 후 명확하게 볼 수있는 클래스에 대한 NoClassDefFoundError가 Jar에 포함되었습니다 (ReferencedLibraries 클래스 확인).

해결책은 빌드 경로에서 항아리를 제거하고 “lib”폴더의 이름을 “libs”로 바꾸는 것입니다. 이것은 개미 규칙이며 새로운 ADT가 .apk 파일에서 라이브러리를 찾아서 포함하는 방식 인 것 같습니다. 일단이 작업을 수행하면 모든 것이 잘 작동했습니다.


답변

jar 라이브러리를 자산 또는 lib에 넣을 필요는 없었지만 속성-> Java 빌드 경로-> “주문 및 내보내기”(이전에 나열되었지만 선택되지 않음)에서이 jar의 상자를 선택하십시오. )


답변

빌드 경로에 외부 jar를 추가하면 jar가 패키지에 추가되지만 런타임 중에는 사용할 수 없습니다.

jar을 런타임 에 사용하려면 다음을 수행해야합니다.

  • 항아리를 assets폴더 아래에 넣으십시오.
  • 이 항아리 사본을 빌드 경로에 포함하십시오.
  • 동일한 팝업 창의 내보내기 탭으로 이동
  • 새로 추가 된 병에 대해 상자를 확인하십시오.

답변

나는 MapActivity를 위해 이것을 가지고있었습니다. Eclipse의 빌드는 디버거에서 NoClassDefFound를 가져옵니다.

<Application>...</Application>요소 내부에서 매니페스트에 라이브러리를 추가하는 것을 잊었습니다.

<uses-library android:name="com.google.android.maps" />


답변

포함 된 프로젝트의 순서를 변경했습니다 (Eclipse / Build Path 구성 / 주문 및 내보내기). 두 개의 종속 프로젝트를 “주문 및 내보내기”목록의 맨 위로 옮겼습니다. “NoClassDefFoundError”문제를 해결했습니다.

나에게는 이상하다. 포함 된 라이브러리 및 프로젝트 순서의 중요성에 대해 들어 보지 못했습니다. 안드로이드 + 이클립스 재미 🙂


답변

이것이 관련이 있는지 또는 여전히 답을 찾고 있는지 확실하지 않지만 동일한 오류를 조사하려고 시도 하면서이 스레드를 발견했습니다 (아마도 다른 이유로).

온라인에서 솔루션을 찾을 수 없었지만 비슷한 스레드에 대한 답변을 통해 프로젝트를 재구성 (또는 정리)해야한다고 생각했습니다.

Eclipse에서 Project => Clean으로 이동하십시오. 프로젝트를 선택하면 Eclipse가 자체적으로 수정하는 것 같습니다. 나에게 이것은 문제를 해결했다.

도움이 되었기를 바랍니다.


답변

같은 문제가 발생했습니다. 사용하려는 라이브러리가 표준 JDK 7로 컴파일 되었기 때문입니다.

-source 1.6 -target 1.6옵션으로 다시 컴파일하고 정상적으로 작동했습니다.