IT이야기

java.displaces를 클릭합니다.ClassNotFoundException:경로에서 클래스를 찾을 수 없습니다: dexpathlist

cyworld 2022. 6. 15. 20:58
반응형

java.displaces를 클릭합니다.ClassNotFoundException:경로에서 클래스를 찾을 수 없습니다: dexpathlist

저는 현재 순수 네이티브 ndk를 사용해야 하는 프로젝트를 진행하고 있습니다.Irlicht 엔진 소스에서 헬로월드의 예를 실행했을 때 효과가 있었습니다.그런 다음 같은 형식으로 프로젝트에 사용합니다.하지만 나는 다음과 같은 것을 얻었다.

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 <android/log.h>
#include <jni.h>
#include <android_native_app_glue.h>
#include "android_tools.h"
#ifdef _IRR_ANDROID_PLATFORM_
void android_main(android_app* app)
{
__android_log_print(4 , "pom" , "nothing");
}

#엔디프

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에서 액티비티 이름을 지정했습니다.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.irrlicht.example1"
    android:versionCode="1"
    android:versionName="1.0">
...
<application android:icon="@drawable/irr_icon" android:label="HelloWorldMobile1" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" android:debuggable="true">
        <activity android:name="android.app.POMActivity"
        android:label="HelloWorldMobile1"
        android:launchMode="singleTask"
        android:configChanges="orientation|keyboardHidden"
        android:screenOrientation="portrait"
        android:clearTaskOnLaunch="true">
        <meta-data android:name="android.app.lib_name" android:value="HelloWorldMobile1" />                     

내가 여기서 하고 있는 실수는 무엇인가?특사라면 풀 코드를 올리겠습니다.

가능한 모든 옵션을 시도했지만 결과는 0입니다.마침내 나는 나에게 도움이 되는 올바른 해결책을 찾았다.Instant Run 파일 -> 설정으로 이동 -> 빌드, 실행, 전개 -> Instant Run 체크박스를 꺼주세요.앱을 한 번 실행하면 이 apk 파일이 제대로 작동합니다.

저도 비슷한 문제가 있었습니다. 해결 방법은 다음과 같습니다.

  1. 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 속성을 선택합니다.
  2. 왼쪽 메뉴에서 [Java Build Path]를 선택합니다.
  3. Order and Export 탭을 선택합니다.
  4. 목록에서 프로젝트에 추가한 라이브러리 또는 외부 자리가 선택되어 있는지 확인합니다.
  5. 마지막으로 프로젝트를 정리하고 실행합니다.

이 답변도 확인하실 수 있습니다.

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

<activity android:name="android.app.POMActivity"

이것을 다음과 같이 바꿉니다.

<activity android:name=".POMActivity"

또는

<activity android:name="com.irrlicht.example1.POMActivity"

단말기의 앱 삭제 및 프로젝트 청소는 나에게 효과가 있다.

클린 프로젝트와 리빌드 프로젝트를 시험해 보세요.

보는 것만으로 문제를 이해해야 한다.

덱스 오류

하지만 이 문제를 해결하는데 한나절이 걸렸다.
안드로이드 개발자 페이지의 지시에 따라 이 문제를 해결합니다.https://developer.android.com/studio/build/multidex.html

됩니다.build.gradle 삭제:

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

    // Enabling multidex support.
    multiDexEnabled true
}

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

다음 합니다.MultiDexApplication합니다.AndroidManifest.xml ""를 덮어씁니다."attachBaseContext()기능(어플리케이션클래스를 확장할 수 없는 경우).

그게 전부고, 그게 문제를 해결했어요.

이 예외는 레이아웃에 다음과 같은 사용자 정의 보기가 있는 경우에도 발생할 수 있습니다.

<com.example.MyView
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

뷰의 패키지 이름을 "com.displays"에서 다른 이름으로 변경하지만 레이아웃에서도 변경하는 것을 잊은 경우.

프로젝트가 직전에 컴파일된 경우 다음을 사용하여 캐시를 클리어할 수 있습니다.

./gradlew clean

또는

./gradlew cleanBuildCache

또는 윈도우의 경우

gradlew cleanBuildCache

https://developer.android.com/studio/build/build-cache.html

요../gradlew --stop명령어를 안드로이드 스튜디오 터미널에서 사용합니다.이 명령을 수행한 후 프로젝트를 청소하고 다시 빌드하십시오.

  1. bin 폴더를 삭제하다
  2. 도서관의 순서를 바꾸다
  3. 청소 및 재구축

날 위해 일했어

Android studio 4.0+에서는 이 문제를 겪고 있는 모든 사용자는 여기에서 언급한 바와 같이 Java 8을 활성화하기만 하면 됩니다.

android {
    defaultConfig {
            ...
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

멀티덱스를 유효하게 하고 있는 유저의 경우는, 이것을 기입해 주세요.

inside 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응용 프로그램 태그에 이 className 쓰기

 <application
    android:name="YourPakageName.EnableMultiDex"
    android:hardwareAccelerated="true"
    android:icon="@drawable/wowio_launch_logo"
    android:label="@string/app_name"
    android:largeHeap="true"
    tools:node="replace">

MultiDex Application을 확장하는 맞춤형 Application 클래스는 필요 없습니다.대신 AndroidManifest.xml에서 이 기능을 사용할 수 있습니다.

<application
android:name="android.support.multidex.MultiDexApplication"
android:hardwareAccelerated="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">

그리고 build.gradle(모듈:app)의 경우와 함께

defaultConfig {
      ...

      // Enabling multidex support.
      multiDexEnabled true
}

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

고마워요.

이 문제는 여러 번 직면했지만 Instant Run을 비활성화하면 모두 해결됩니다.

멀티덱스를 사용하는 경우 응용 프로그램 대신 MultiDex Application으로 응용 프로그램 클래스를 확장하고 5.0 이하 Android에서 필요한 다음 방법을 무시하십시오(멀티덱스에 대한 5.0 이상 지원).

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

의존관계에서 이것을 추가한다.

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

제 경우 이 문제는 Kotlin 때문에 발생했습니다.제 기존 코드에는 Kotlin이라고 하는 클래스가 있었습니다.앱을 만들고 설치했는데 첫 액티비티를 열자마자 앱이 크래쉬했어요.이 에러는 logcat에 표시되어 있었습니다.그리고 Kotlin 웹사이트에서 앱 gradle 파일로 Kotlin 버전을 업데이트했습니다.앱을 다시 빌드하면 정상적으로 동작합니다.

Apps AndroidManifest.xml 파일의 액티비티 경로가 잘못되었을 수 있습니다.AndroidManifest.xml에서 다음과 같이 전체 상대 경로를 사용하여 액티비티를 등록합니다.

<activity android:name="<full_path>.ActivityName" />

.lib로로 합니다.libs ,

이 문제를 해결하기 위해 프로젝트에 에러 마크가 표시됩니다.프로젝트 클릭>

Properties > Java Build Path > libraries:

를 모두 삭제하고 , 「마크가 붙어 있는 라이브러리」를 합니다.apply > ok >프로젝트를 청소합니다.TADA는 매직이 있습니다:)

주어진 답변을 시도한 후 동일한 예외의 다른 이유를 발견했습니다. 즉, 사용 중인 라이브러리를 수동으로 기본 라이브러리에 추가해야 하는 것입니다.

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

이 솔루션 전에 이클립스에서 .java 파일 내에서 "Fix Project setup"을 사용했지만, 이 방법은 작동하지 않았기 때문에 여기에 수동으로 추가해야 했습니다.

삼성 롤리팝 기기에서만 이 크래시가 발생했는데 이 솔루션이 나에게 효과가 있었습니다.

dexOptions {
     preDexLibraries false
}

이 질문은 현재 구글에서 가장 높은 순위에 있는 검색 결과이며, 위의 답변 중 어느 것도 나에게 효과가 없었기 때문에 여기에 이 답변을 게시합니다.

을 열고 AndroidManifest" 파일을 열고 오류 확인
or or or openicle.
액티비티 이름을 선언했는지 확인합니다(액티비티 클래스를 카피할 때 잊어버립니다).

제 경우 모든 오카렌스 "com"을 "ctrl"+"shift"+"R" 명령어로 대체했습니다.이 명령어는 매니페스트의 액티비티 이름(com으로 시작)도 변경했습니다.

다음과 같은 해결책이 나에게 효과가 있었다.

위에서 말한 모든 것을 시도해 보았지만, 아직 앱이 실행되지 않았습니다.gradle 4+와 Android studio의 최신 버전에서 실행되는 리액션 네이티브 앱을 가지고 있습니다.

react-native run-android를 실행하면 Main Application 클래스를 찾을 수 없다는 문제가 발생하였습니다.즉 ClassNotFoundException

컴파일러 D8을 사용하기 위해 gradle.properties를 업데이트 했을 때 문제를 해결할 수 있었습니다.

덧붙였습니다.

Android.enableD8=true

나의 gradle.properties로

문서 상세: https://android-developers.googleblog.com/2017/08/next-generation-dex-compiler-now-in.html

이것은 나의 문제와 비슷했다.모든 Java 앱에 Kotlin 파일을 추가한 후, Kotlin 파일을 사용한 뷰에 액세스 할 때, 나의 앱은 계속 크래쉬 했다.Android Studio를 셧다운하고 재시작하면 "Kotlin not configured, you want to configure?"라는 메시지가 뜨면서 문제가 해결되었습니다.

으로 한 은 다음과 것을 입니다.classpath 내 라인build.gradle 삭제:

buildscript {
   ...
   dependencies {
      ...
      classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
      ...
   }
   ...
}

Android studio 2.1을 2.3으로 업데이트한 후 apk를 출력에서 복사하여 sdcard에 넣으면 어플리케이션이 실행되지 않아 문제가 발생합니다.이 문제를 위해 저는 빌드 옵션에서 apk를 빌드하고 안드로이드 스튜디오에서 apk를 빌드합니다.

유효하게 되어 있는 경우minifyEnabled그리고.shrinkResources앱 그래들 파일에서 true로 이동합니다.다음 행을 에 추가해야 합니다.proguard-rules.pro파일

- class com을 유지합니다.your package_name 입니다.** { *; }

최소화는 apk 파일에서 중요한 클래스가 삭제되기 때문입니다.

이전에도 이 문제가 있었고, 여기에 있는 코멘트는 도움이 되었지만 이번에는 도움이 되지 않았습니다.프로가드 설정을 확인하고 다음 행을 삭제했습니다.프로가드가 이 오류와 관련이 있을 수 있도록 동작했습니다.

 -optimizationpasses 5
        -overloadaggressively
        -repackageclasses ''
        -allowaccessmodification
        -dontskipnonpubliclibraryclassmembers

Ashik abbs가 응답(Instant Run 비활성화)하지만 Instant Run이 필요합니다.마침내 도움이 되는 솔루션을 찾았습니다.minify Enabled를 비활성화해 주세요.디버깅 블록의 build.gradle(모듈: app)로 이동하여 minifyEnabled를 비활성화합니다.

debug {
            minifyEnabled false

        }

저 같은 경우에는 Androidx를 사용하여 프로젝트를 셋업 할 때 오래된 네임스페이스 라이브러리를 사용했습니다.

해결방법은,android.support.design.widget.BottomNavigationView적절한 컴포넌트가 있는 컴포넌트는 지원 라이브러리에서 탈출할 수 있는 컴포넌트:com.google.android.material.bottomnavigation.BottomNavigationView.

내 경우 액티비티를 정의합니다.Manifest.xml작성하지 않았습니다.activity그래서 액티비티를 만들고 정의했습니다.manifest그리고 나의 실수는 해결되었다!

@hofs를 사용하지만 minifyEnabled 위치를 표시합니다.

Module Gradle에서는 Add minifyEnabled false in Debug block이 기능합니다.

 android {
    compileSdkVersion 28
    buildToolsVersion "29.0.2"
    defaultConfig {
        applicationId "com.korechi.roamioapp"
        minSdkVersion 23
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
        debug {
          minifyEnabled false
        }
    }

}

언급URL : https://stackoverflow.com/questions/22399572/java-lang-classnotfoundexception-didnt-find-class-on-path-dexpathlist

반응형