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 파일이 제대로 작동합니다.
저도 비슷한 문제가 있었습니다. 해결 방법은 다음과 같습니다.
- 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 속성을 선택합니다.
- 왼쪽 메뉴에서 [Java Build Path]를 선택합니다.
- Order and Export 탭을 선택합니다.
- 목록에서 프로젝트에 추가한 라이브러리 또는 외부 자리가 선택되어 있는지 확인합니다.
- 마지막으로 프로젝트를 정리하고 실행합니다.
이 답변도 확인하실 수 있습니다.
이것은 당신의 경우 문제인 것 같습니다.매니페스트에서 활동의 상대 경로가 올바르지 않습니다.
<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
명령어를 안드로이드 스튜디오 터미널에서 사용합니다.이 명령을 수행한 후 프로젝트를 청소하고 다시 빌드하십시오.
- bin 폴더를 삭제하다
- 도서관의 순서를 바꾸다
- 청소 및 재구축
날 위해 일했어
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
'IT이야기' 카테고리의 다른 글
함수 선언: K&R vs ANSI (0) | 2022.06.16 |
---|---|
Nuxt.js의 스테이트와 Getter에 대해서: Getters가 동작하지 않는다 (0) | 2022.06.15 |
불필요한 소수점 0 없이 문자열에 부동소수 형식을 적절하게 지정하는 방법 (0) | 2022.06.15 |
key.charAt는 createLocalVue()의 함수 오류가 아닙니다. (0) | 2022.06.15 |
JEST @vue/composition-api + Jest 테스트 스위트를 실행하지 못했습니다.[ vue - composition - api ]는 Vue . use ( Vue Composition )를 호출해야 합니다.API) 사용 전 (0) | 2022.06.15 |