programing

NoClassDefoundError - Eclipse 및 Android

prostudy 2022. 4. 17. 10:01
반응형

NoClassDefoundError - Eclipse 및 Android

다른 외부 라이브러리를 빌드 경로에 추가하기 전까지는 잘 작동하던 안드로이드 앱을 실행하려고 하는데 문제가 있어.스코어닌자 항아리를 추가한 후 앱을 실행하려고 하면 NoClassDefoundError를 받는다.

메시지는 다음과 같다.

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

모든 빌드 스크립트는 안드로이드 툴(?)에 의해 생성되기 때문에 청소와 재구축, 일식 재시동 외에 무엇을 할 수 있을지 모르겠다(이미 세 가지 모두 시도해 보았다).내가 이걸 어떻게 수정할 수 있는지 아는 사람 있어?

나는 ADT를 업데이트한 후 이 문제가 생겼다.

나는 모든 JAR 파일을 "lib"라는 폴더에 저장하고 항아리를 일반적인 Eclipse 방식으로 빌드 경로에 추가하고 있었다.내가 업데이트하기 전까지는 잘 먹혔어.

업데이트 후, 명확하게 볼 수 있는 클래스가 병(ReferencedLibraries 클래스 확인)에 포함된 클래스에 대해 NoClassDefoundError를 받고 있었다.

해결책은 빌드 경로에서 내 항아리를 제거하고 내 "lib" 폴더를 "libs"로 바꾸는 것이었습니다.이것은 개미 협약이며, 새로운 ADT가 .apk 파일에 라이브러리를 찾아 포함하는 방식인 것 같다.일단 이렇게 하고 나니 모든 게 잘 풀렸다.

jar-brary를 자산이나 lib에 넣지 않고 Properties -> Java Build Path ->"Order and Export"(이전에는 나열되었지만 선택되지 않음)에서 이 jar에 대한 상자만 체크 표시했다.

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

런타임에 항아리를 사용할 수 있으려면 다음을 수행해야 한다.

  • 항아리를 네 밑에 넣어라.assets폴더
  • 이 병 복사본을 빌드 경로에 포함
  • 동일한 팝업 창의 내보내기 탭으로 이동
  • 새로 추가된 병과 상자를 대조

MapActivity를 위해 이것을 준비했다.Eclipse의 빌드에는 디버거의 NoClassDefound가 있다.

매니페스트에 라이브러리 추가 안 함, 내부<Application>...</Application>

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

포함된 프로젝트의 순서를 변경했다(Eclipse / Configure Build Path / Order and Export).나는 나의 두 종속 프로젝트를 "주문 및 수출" 목록의 맨 위로 이동시켰다.그것은 "NoClassDefoundError" 문제를 해결했다.

나로서는 이상하다.포함된 도서관과 프로젝트 순서의 중요성에 대해서는 듣지 못했다.Android + Eclipse는 재미있다 :)

이게 관련이 있는 것인지, 아니면 아직도 답을 찾고 있는 것인지는 잘 모르겠지만, 같은 오류(그러나 아마도 다른 이유로)를 조사하려다가 우연히 이 실마리를 발견했다.

온라인에서 어떤 해결책도 찾을 수 없었지만, 비슷한 맥락의 답변이 나로 하여금 생각을 하게 했고, 내가 아마도 그 프로젝트를 재건(또는 청소)할 필요가 있다는 것을 깨달았다.

Eclipse에서 Project => Clean으로 이동하십시오.당신의 프로젝트를 선택하면 Eclipse가 그것을 스스로 고치는 것처럼 보였다.나는 이것이 문제를 해결했다.

이게 도움이 되길 바래.

나는 같은 문제에 부딪혔다.그 이유는 사용하려던 도서관이 표준 JDK 7로 편찬되어 있었기 때문이었다.

나는 그것을 로 재탄생시켰다.-source 1.6 -target 1.6옵션도 잘 먹혔어

내게도 같은 일이 작용했다: 속성 -> 자바 빌드 경로 -> 흥미롭게도 "주문 및 내보내기" - 왜 자동으로 수행되지 않는가?세팅이 좀 빠진 것 같아.SDK 업그레이드 후 나에게도 이런 일이 있었다.

프로젝트 폴더를 마우스 오른쪽 버튼으로 누르고 Java 빌드 경로에서 속성을 찾은 다음 표시되는 jar 파일을 선택하십시오.그것은 나에게 효과가 있었다.

존 오코너가 그 문제에 대해 옳다.문제는 ADT 17 이상을 설치하는 것이다.오류를 수정하기 위해 다음 링크를 찾음:

http://android.foxykeep.com/dev/how-to-fix-the-classdefnotfounderror-with-adt-17

이 게시물(및 다른 게시물)의 모든 것을 시도해 봤지만, 내게는 효과가 없었으며, 이것은 내가 경험했던 것 중 가장 끔찍한 ADT 업그레이드였고, 작동하는 ADT 백업 없이는 결코 업그레이드하지 않을 것이다.

프로젝트를 제거한 다음 가지고 있던 소스 백업을 사용하여 다시 추가함으로써 가까스로 해결했다.

나는 ADT22와 같은 오류를 가지고 있었다.속성 -> Java 빌드 경로 -> 주문 및 내보내기에서 "Android Private Libraries"를 확인하도록 해결됨.만약 당신이 도서관 프로젝트를 사용하고 있다면, 그것들도 마찬가지로 그렇게 해야 한다.

나의 경우는 조금 다르기 때문에 기존의 답변은 모두 나에게 통하지 않는다.그것을 작동시키는 데 몇 시간이 걸렸다.나는 이클립스를 사용하고 있다.

내 안드로이드 프로젝트는 제3자 jar 파일이 필요한 또 다른 정상적인 Java 1.6 프로젝트를 포함하고 있다.요령은 다음과 같다.

  • 일반 Java 프로젝트에서 컴파일할 항아리를 포함(전용), "주문 및 내보내기" 탭에서 확인 안 함
  • 또한 이 jar 파일을 Android 프로젝트의 "libs" 폴더에 복사하여 런타임에 사용할 수 있도록 하십시오.

이것이 나와 비슷한 시나리오를 가진 사람들에게 도움이 되기를 바란다.

가끔은 외부 프로젝트 전체를 도서관으로 가져가야 할 때도 있다. 단지는 물론,

내 문제는 전체 프로젝트(내 경우 Google-play-services_lib)를 단지 병뿐만 아니라 라이브러리로 추가함으로써 해결되었다.그에 대한 단계(@style answer):

  1. 파일->신규->기타
  2. Android 프로젝트 선택
  3. "기존 원본에서 프로젝트 작성" 선택
  4. "찾아보기..." 버튼을 누르고 원하는 프로젝트로 이동하십시오.
  5. 완료(작업영역의 지금 수행 표시줄 프로젝트)
  6. 프로젝트 마우스 오른쪽 버튼 클릭 -> 속성
  7. Android->Library 섹션에서 추가를 누르십시오.
  8. 최근에 추가된 프로젝트 선택 -> OK

AndroidManifest.xml에 "uses-libary" 태그가 있는 종속성이 있는 jar를 포함하지 않아 발생하는 경우도 있다.

또한 "응용프로그램" 태그 안에 있어야 한다.

안부 전해요

라비

나는 이 문제가 있었고 그것은 도서관을 "수출"하지 않았기 때문에 일어났다.문제는 단지 APK 포장을 하는 동안 일부 클래스의 .class 파일을 사용할 수 없기 때문이다.컴파일 시간 만료와 함께 정상적으로 작동

나의 경우 "CusrsorAdapter" 클래스를 사용하고 있었고 "JavaBuildPath->Order and Export"에서 나는 지원 V4 항아리를 확인하지 않았다.일단 선택되면 이슈는 사라진다.

위의 이유로 인해 ClassDefound 오류가 발생하지 않도록 하려면 logacat를 확인하십시오. 런타임에 알 수 없는 수퍼 클래스 오류가 나타날 것이다.

악명 높은 64k 제한 문제에 도달한 경우 멀티덱스를 활성화해야 한다.

이렇게 하는 거야.https://developer.android.com/tools/building/multidex.html

여러 가지 시도를 해봤는데 내 경우 오류의 원인은 map.jar와 Java Build Path-> Libraries에서 Google Api의 충돌이었다.그래서, 내가 지도를 제거했을 때, 그것은 잘 작동했다.

안부 전해요

와히브

jar 파일이 프로젝트의 libs 디렉토리에 있는지 확인하십시오. 일식과 함께 최신 ADT 버전을 사용하고 있는지 확인하십시오.

나도 똑같은 문제가 생겼어...그것을 고치기 위해, 나는 단지 "빌드 경로"에서 안드로이드 개인 립스를 제거하고 OK를 클릭했다... 그리고 내가 다시 "빌드 경로"를 열었을 때, 일식이 다시 그것들 스스로 그것들을 추가했고, 그리고 나서 나에게 효과가 있었다;)...

ADT를 업데이트한 후 이틀 동안 이 문제를 해결하려고 노력했다. 마침내 나는 운이 좋아서 이 자리에 오게 되었다.

https://code.google.com/p/android/issues/detail?id=55304

옳은 방향으로 인도해줬어쩌면?솔루션을 따를 때 - 모든 프로젝트의 Android 지원 라이브러리를 동일한 버전으로 교체하십시오(제거한 후 프로젝트에 다시 설치).나는 이것이 도움이 되기를 바란다 - 행운을 빈다.

어떤 파일과 관련된 해결 방법이 있는지 알고 싶으시다면, 여기 내가 찾아낸 것이 있다..classpath 파일을 다음으로 단순 변경

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="src" path="gen"/>
    <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
    <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
    <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
    <classpathentry kind="output" path="bin/classes"/>
</classpath>

모든 라이브러리 프로젝트와 주 Android 프로젝트에서 .classpath 파일을 교체하십시오..classpath 파일은 일식 프로젝트의 루트 폴더에 있다.클래스 경로 항목이 있는 경우(따라서 현재 버전의 .classpath와 비교해 보십시오) 자신의 클래스 경로 항목을 추가하는 것을 잊지 마십시오.

위에서 설명한 구성 요소(Eclipse / Configure Build Path / Order and Export)와 일식 메뉴를 거치는 것과 같은 결과라고 생각한다.

이곳의 해결책은 내게 효과가 있었다.라이브러리를 libs 폴더로 가져온 다음 build.gradle 파일을 수정한 다음 gradlew로 청소하는 것이다.

프로젝트 빌드 경로에서 주문을 변경하고 내보내면 이 오류가 발생하지 않는다.이를 달성하는 또 다른 방법은 프로젝트 폴더의 .classpath를 통해서입니다.

다음을 시도해 보십시오.-

1단계

Eclipse에서 팻을 빌드할 모든 라이브러리 추가(모든 라이브러리가 참조되도록 함을 의미)

2단계

R.java 파일을 삭제하고 프로젝트를 다시 빌드하십시오.걱정마, R.Java는 자동으로 재생될거야.

냉각 :)

내가 이해한 바와 같이, 너의 프로젝트는 아무런 오류도 보이지 않는다. 왜냐하면 네가 항아리를 포함했기 때문이다.하지만 당신의 프로젝트가 장치로 "내보내기" 되었을 때 그 항아리는 사용되지 않을 것이다.이것을 사용해 보십시오.

프로젝트 -> 속성

Java 빌드 경로/주문 및 내보내기

[✔] 당신의 항아리

이런 일은 내게 꽤 자주 일어난다.

마지막으로 기억나는 것은 Eclipse ADT(구글 스페셜 에디션)를 안드로이드 스튜디오로 바꾸고, 다시 전환하면서 생긴 일이다.나는 기본적으로 나에게 맞지 않는 스택 오버플로우에서 찾을 수 있는 모든 방법을 시도했다.

결국 ADT로 IDE를 오리지널 이클립스(Kepler)로 전환해 앱을 다시 작동(더 이상 NoCalsDeffoundError)하게 됐다.

참조URL: https://stackoverflow.com/questions/2247998/noclassdeffounderror-eclipse-and-android

반응형