java.lang.ClassNotFoundException : 경로에서 클래스를 찾지 못했습니다 : dexpathlist

Karthik Sivam 08/21/2017. 13 answers, 93.384 views
java android android c++ android-ndk android-ndk

현재 순수 Ndk를 사용해야하는 프로젝트를 진행 중입니다. Irrlicht 엔진 소스에서 helloworld 예제를 실행하려고 할 때 작동했습니다. 그런 다음이 프로젝트의 동일한 형식을 따르는 프로젝트에서이 프로젝트를 사용하려고합니다. 하지만 나는 :

03-14 01:40:05.308: E/AndroidRuntime(799): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.irrlicht.example1/android.app.POMActivity}: java.lang.ClassNotFoundException: Didn't find class "android.app.POMActivity" on path: DexPathList[[zip file "/data/app/com.irrlicht.example1-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.irrlicht.example1-2, /system/lib]] 

내 프로젝트를 운영하는 동안.

다음은 내 main.cpp 파일입니다.

#include #include #include #include "android_tools.h"
#ifdef _IRR_ANDROID_PLATFORM_
void android_main(android_app* app)
{
__android_log_print(4 , "pom" , "nothing");
} 

#endif

Android.mk의 경우 :

LOCAL_PATH := $(call my-dir)/..
IRRLICHT_PROJECT_PATH := $(LOCAL_PATH)
include $(CLEAR_VARS)
LOCAL_MODULE := Irrlicht
LOCAL_SRC_FILES := /home/karthik/Android/Essentials/ogl-es/lib/Android/libIrrlicht.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := HelloWorldMobile1
LOCAL_CFLAGS := -D_IRR_ANDROID_PLATFORM_ -pipe -fno-exceptions -fno-rtti -fstrict-aliasing
LOCAL_C_INCLUDES := -I ../../include -I /home/karthik/Android/Essentials/ogl-es/include -I /home/karthik/Android/json/jsoncpp-src-0.5.0/libs/linux-gcc-4.8 -I /home/karthik/Android/json/jsoncpp-src-0.5.0/include/json 
LOCAL_SRC_FILES :=  android_tools.cpp main.cpp
LOCAL_LDLIBS := -lEGL -llog -lGLESv1_CM -lGLESv2 -lz -landroid -ldl 
LOCAL_STATIC_LIBRARIES := Irrlicht android_native_app_glue
include $(BUILD_SHARED_LIBRARY)
$(call import-module,android/native_app_glue) 

그리고 AndroidManifest.xml에 Activity 이름을 지정했습니다.

...                 

내가 여기서하고있는 실수는 무엇입니까? 꼭 필요한 경우 전체 코드를 게시합니다.

4 Comments
Siddharth_Vyas 03/14/2014
외부 jar 파일을 사용하고 있습니까?
Karthik Sivam 03/14/2014
@SiddharthVyas 아니, 나는 이것에서 외부 병 파일을 사용하지 않고있다.
1 Igor Ganapolsky 08/09/2016
귀하의 신청서는 복수 작성 되었습니까? 그렇다면 문제를 설명합니다.
j2emanue 07/05/2017
내가 서명 한 apk를했을 때이 오류가 발생하지 않았습니다. 그냥 디버그

13 Answers


mnsalim 05/23/2017.

나는 비슷한 해결책을 가지고있다.

  1. 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 Properties 선택하십시오.
  2. 왼쪽의 메뉴에서 Java Build Path 를 선택하십시오.
  3. Order and Export 탭을 선택하십시오.
  4. 목록에서 프로젝트에 추가 한 라이브러리 또는 외부 병을 checked .
  5. 마지막으로 프로젝트를 정리하고 실행하십시오.

대답을 확인할 수도 있습니다.

4 comments
1 FoxDonut 11/06/2016
이것은 질문에 대한 올바른 해결책입니다. 위와 동일한 오류가있는 libgdx 게임을 테스트했습니다. 내 전화 (삼성 갤럭시 S6)로 생성 된 로그를 사용하여 이러한 오류를 발견했습니다. 이 솔루션을 적용하고 나면 모든 문제가 해결되었습니다.
2 Zin Min 03/25/2017
프로젝트를 마우스 오른쪽 버튼으로 클릭하여 속성을 찾을 수 없습니다. 나는 어리 석을 수 있습니다. :(
2 user3036320 04/19/2017
안드로이드 스튜디오 솔루션을 보여주세요 ...
2 Skyler 07/08/2017
나는 속성을 찾을 수 없다. 아무도 나열된 페이지로 이동하는 방법을 알아낼 수 없다.

Sushil 03/14/2014.

이것은 귀하의 경우에 문제가되는 것 같습니다. 매니페스트에서 활동의 상대 경로가 올바르지 않습니다.

 

이를 다음으로 대체하십시오.

 

또는

 
1 comments
1 Karthik Sivam 03/14/2014
나는 둘 다 시도했다, 그것은 동일한 예외를 보여준다.

Akash Bisariya 03/06/2017.

나는 단지 그 문제를 이해해야한다.

dex errors

그러나이 문제를 해결하는 데는 반나절 걸렸다.
https://developer.android.com/studio/build/multidex.html 에 따라 Android 개발자 페이지의 지침에 따라이 문제를 해결합니다.

먼저 이것을 gradle.build 파일에 추가하십시오 :

defaultConfig {
    ...
    minSdkVersion 14
    targetSdkVersion 21
    ...

    // Enabling multidex support.
    multiDexEnabled true
}

 dependencies {
     compile 'com.android.support:multidex:1.0.0'
 } 

그런 다음 위의 링크에 설명 된대로 Application 클래스를 확장하거나 ( AndroidManifest.xml 에서 응용 프로그램 클래스를 선언하거나 override attachBaseContext() 함수를 override attachBaseContext() 의) MultiDexApplication 클래스로 MultiDexApplication 합니다.

그게 다야 문제가 해결되었습니다.

4 comments
1 milosmns 08/30/2016
멀티 덱스 추가는 참조 횟수 한도 (56k)를 넘을 때만 유용하며, 롤리팝 이전에는 very 불안정하고 very 신뢰할 만합니다. 이는 최후의 수단으로 문제를 해결하는 데 사용해야합니다.
Akash Bisariya 08/30/2016
그럼 당신에 따라 솔루션이어야합니다
milosmns 08/30/2016
나는 멀티 - 덱스 (multi-dex)가 도움이되는 것보다 더 많은 문제를 일으킨다는 것을 말하고있다. 이것은 개발자 웹 사이트에 분명하게 명시되어있다. 내가 여기 있으면 대답을 찾지 않을거야, 그렇지?
Akash Bisariya 08/30/2016
정보를 제공해 주셔서 감사합니다. 좋은 해결책을 찾으면 여기에서 업데이트하십시오. 도움이 될 것입니다.

V. Kalyuzhnyu 07/07/2016.

장치의 앱 삭제 및 프로젝트 정리 작업이 나를 위해 작동합니다.


crazyjune 06/13/2014.
  1. bin 폴더 삭제
  2. 도서관의 순서를 바꾼다.
  3. 청소 및 재건

나를 위해 일했다.


Ali Gürelli 10/13/2016.

나는 그것을 사용하여 해결 : ./gradlew --stop 안드로이드 스튜디오 터미널에서 명령을 ./gradlew --stop 합니다. 이 명령을 수행 한 후 프로젝트를 정리하고 다시 빌드하십시오.


Redman 01/05/2017.

multidex를 가지고있는 사람이라면 누구나 이것을 쓸 수 있습니다.

build.gradle 내부

apply plugin: 'com.android.application'

android {
 defaultConfig {
      multiDexEnabled true
  }
 dexOptions {
        javaMaxHeapSize "4g"
    }
}

dependencies {
    compile 'com.android.support:appcompat-v7:+'
    compile 'com.google.android.gms:play-services:+'
    compile 'com.android.support:multidex:1.0.1'
} 

아래처럼 EnableMultiDex 클래스를 작성하십시오.

import android.content.Context;
import android.support.multidex.MultiDexApplication;

public class EnableMultiDex extends MultiDexApplication {
    private static EnableMultiDex enableMultiDex;
    public static Context context;

    public EnableMultiDex(){
        enableMultiDex=this;
    }

    public static EnableMultiDex getEnableMultiDexApp() {
        return enableMultiDex;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        context = getApplicationContext();

    }
} 

AndroidManifest.xml 에는 Application AndroidManifest.xml className 씁니다.

 

Ashik Abbas 07/26/2017.

가능한 모든 옵션을 시도했지만 결과는 0입니다. 마지막으로 나는 나를 위해 도움이되는 정확한 해결책을 발견했다. 즉시 실행을 중지하려면 이동 파일 -> 설정 -> 빌드, 실행, 배포 -> 즉시 실행 -> 즉시 실행 확인란의 선택을 취소하십시오 . 응용 프로그램을 한 번 실행하면이 apk 파일이 제대로 작동합니다.


Walking Code 05/05/2014.

lib 에서 libs 폴더 이름을 변경하십시오.

그런 다음이 오류를 해결하기 위해 프로젝트에 몇 가지 오류 표시가 나타납니다. 프로젝트>

Properties > Java Build Path > libraries :

빨간색으로 표시된 모든 라이브러리를 제거한 다음 clean your projectclean your project 한 후 apply > ok >apply > ok > clean your project . TADA는 마술을 본다 :)

1 comments
Shubham 10/27/2015
폴더 이름은 libs 만입니다.

Tere Bentikh 09/29/2015.

내가 주어진 답변을 시도한 후에, 나는 동일한 예외에 대한 다른 이유를 발견했다. 나는 라이브러리를 수동으로 메인 라이브러리에 사용하고있다.

Right click on my main library > 
Properties > 
Android > 
Go to the very bottom of the screen and click (Add) > 
Select my other library that caused the crash >Apply 

이 솔루션을 사용하기 전에 Eclipse에서 .java 파일 내에서 "Fix Project setup"을 사용했지만 작동하지 않아 수동으로 여기에 추가해야했습니다.


dees91 11/21/2016.

일부 gradle 종속성을 제거한 후이 오류가 발생하면 매니페스트를 확인하고 해당 종속성에 해당하는 모든 항목을 제거했는지 확인하십시오.

1 comments
Petter Friberg 11/21/2016
여러 질문에 동일한 답변 을 추가하지 마십시오. 가장 좋은 답변을하고 나머지는 중복으로 표시하십시오. 몇 가지 질문에 중복 답변을 추가하는 것이 허용 되는가?를보십시오.

multidex를 사용하는 경우 응용 프로그램 대신 MultiDexAppication을 사용하여 응용 프로그램 클래스를 확장하고 5.0 이하의 Android에 필요한 아래 메서드를 재정의하십시오 (5.0 이상은 multidex를 지원하므로)

@Override
protected void attachBaseContext(Context base)
{
    super.attachBaseContext(base);
    MultiDex.install(BaseApplication.this);
} 

의존성이 있음

compile 'com.android.support:multidex:1.0.1' 

Shivegeeky 06/23/2017.

내 understading 당으로 업데이 트 안드로이드 스튜디오 2.1에서 즉시 기능으로 인해 응용 프로그램이 실행되지 않습니다 출력으로 APK를 복사하고 즉시 sdcard에 넣어 때문에 문제를 얻을. 이 문제에 대한 빌드 옵션에서 apk 빌드 안드로이드 스튜디오에서 apk 빌드 할 마십시오.

Related questions

Hot questions

Language

Popular Tags