Android ClassNotFoundException:경로에서 클래스를 찾을 수 없습니다.
10-22 15:29:40.897: E/AndroidRuntime(2561): FATAL EXCEPTION: main
10-22 15:29:40.897: E/AndroidRuntime(2561): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.gvg.simid/com.gvg.simid.Login}: java.lang.ClassNotFoundException: Didn't find class "com.gvg.simid.Login" on path: DexPathList[[zip file "/data/app/com.gvg.simid-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.gvg.simid-1, /vendor/lib, /system/lib]]
10-22 15:29:40.897: E/AndroidRuntime(2561): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2137)
10-22 15:29:40.897: E/AndroidRuntime(2561): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
10-22 15:29:40.897: E/AndroidRuntime(2561): at android.app.ActivityThread.access$600(ActivityThread.java:141)
10-22 15:29:40.897: E/AndroidRuntime(2561): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
10-22 15:29:40.897: E/AndroidRuntime(2561): at android.os.Handler.dispatchMessage(Handler.java:99)
10-22 15:29:40.897: E/AndroidRuntime(2561): at android.os.Looper.loop(Looper.java:137)
10-22 15:29:40.897: E/AndroidRuntime(2561): at android.app.ActivityThread.main(ActivityThread.java:5103)
10-22 15:29:40.897: E/AndroidRuntime(2561): at java.lang.reflect.Method.invokeNative(Native Method)
10-22 15:29:40.897: E/AndroidRuntime(2561): at java.lang.reflect.Method.invoke(Method.java:525)
10-22 15:29:40.897: E/AndroidRuntime(2561): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
10-22 15:29:40.897: E/AndroidRuntime(2561): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
10-22 15:29:40.897: E/AndroidRuntime(2561): at dalvik.system.NativeStart.main(Native Method)
10-22 15:29:40.897: E/AndroidRuntime(2561): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.gvg.simid.Login" on path: DexPathList[[zip file "/data/app/com.gvg.simid-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.gvg.simid-1, /vendor/lib, /system/lib]]
10-22 15:29:40.897: E/AndroidRuntime(2561): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:53)
10-22 15:29:40.897: E/AndroidRuntime(2561): at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
10-22 15:29:40.897: E/AndroidRuntime(2561): at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
10-22 15:29:40.897: E/AndroidRuntime(2561): at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
10-22 15:29:40.897: E/AndroidRuntime(2561): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2128)
10-22 15:29:40.897: E/AndroidRuntime(2561): ... 11 more
매니페스트에 올바르게 표시되어 있기 때문에 원인이 무엇인지 잘 모르겠습니다.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.gvg.simid"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_LOGS" />
<uses-permission android:name="android.permission.READ_OWNER_DATA" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_OWNER_DATA" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-feature android:name="android.hardware.usb.host" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.gvg.simid.Login"
android:label="@string/app_name"
android:screenOrientation="landscape">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
또한 "Android Private Libraries"를 추가하여 "Order and Export"의 맨 위로 이동했지만 여전히 동일한 오류가 발생했습니다.
편집: 프로젝트를 완전히 리빌드했지만 오류를 재현할 수 없었습니다.원인이 무엇인지 확실하지 않다.
제 프로젝트에도 같은 문제가 있었습니다.내 프로젝트와 내 프로젝트에 추가한 라이브러리 프로젝트 간의 안드로이드 지원 라이브러리 버전 충돌로 인해 발생하였습니다.프로젝트 및 라이브러리 프로젝트에 포함된 것과 동일한 버전의 Android 지원 라이브러리를 추가하고 빌드를 정리합니다.모든 게 잘 될 거야
이 방법은 나에게 효과가 있었다.
- 버튼을 해 주세요.
project을 선택합니다.properties - 의 속성 패널이 열립니다.부터 from쪽메 from from from from from from from from from from from from from from 。
Java Build Path->Order and Export - 에서 하다 옆에 .
"Android Dependencies" - ★★★★★★★★★★★★★★★★★.
clean your project
에서 이 는 합병 했고, 로 Android Studio 이후에도 되었습니다.clean ★★★★★★★★★★★★★★★★★」invalidate cash/restart날 미치게 만들었던 수술들
명령줄에서 Gradle Build를 한 번 실행하면 수정할 수 있습니다.다음 n개의 프로젝트 디렉토리를 실행합니다.
./gradlew assemble clean
./gradlew assemble
내가 겪어야 했던 시간 낭비와 좌절을 누군가 덜어주길 바란다.
나도 같은 문제가 있었는데, 이게 나한테 효과가 있었어.
1) 상대경로 대신 메인페스트의 전체 활동경로.
2) '빌드' 폴더를 삭제하고 프로젝트를 청소합니다.
「」를 했을 경우Library Project로서 Android를 사용하고 Kotlin잊지 말고 추가해 주세요.
apply plugin: 'kotlin-android'
모듈의 그래들 파일 맨 위에 있습니다.Android Studio에서 새 모듈을 만들 때 이 행을 추가하지 않아 저처럼 시간을 낭비할 수 있습니다.
편집: 잠시 후 다시 이 문제로 고민하다가 이번에는 프로젝트에 의존하여 모듈을 추가하는 것을 잊었습니다.:)
Eclipse를 사용하는 경우 Project -> Clean을 사용해 보십시오.
이는 APP의 빌드 경로를 변경하면 발생하며 라이브러리 또는 .jar 파일의 추가, 삭제 또는 변경 중 어떤 경우에도 발생할 수 있습니다.가장 좋은 해결책은 이클립스를 재시작하는 것입니다.
Android Studio 2.0 이상에서 새로운 Instant Run 기능을 사용할 때 이 오류가 발생하는 경우 이는 해당 사용자의 버그입니다.
이 문제를 해결하려면 Device/Emulator에서 앱을 수동으로 중지하고 Android Studio에서 를 선택해야 합니다.
그런 다음 실행 버튼 또는 SHIFT+F10을 클릭합니다.
멀티덱스를 유효하게 하고 있는 유저의 경우는, 이것을 기입해 주세요.
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">
제 경우 프로가드의 최소화 프로세스로 인해 프로덕션 애플리케이션으로부터 몇 가지 중요한 클래스가 삭제되었습니다.
해결책은 proguard-rules.pro 파일을 편집하고 다음을 추가하는 것이었습니다.
-keep class com.someimportant3rdpartypackage.** { *; }
Android 4.4 이전 버전에서 Multidex를 사용하는 경우 작업 클래스가 두 번째 dex 파일에 있으므로 Android 시스템에서 찾을 수 없는 문제가 발생할 수 있습니다.
작업 클래스를 메인 dex 파일에 유지하려면 다음 페이지를 참조하십시오.
https://developer.android.com/studio/build/multidex.html#keep
dex 파일에 있는 클래스를 찾으려면 Android Studio를 사용하십시오.
Android Studio에 apk를 끌어다 놓기만 하면 됩니다.apk 탐색기에서 dex 파일을 볼 수 있습니다.
그런 다음 dex 파일을 선택하여 내부에 어떤 클래스가 있는지 확인합니다.
또 다른 대안은 dexdump입니다.
apk에 포함된 dex 파일의 내용을 확인하려면 다음 URL에 있는dexdump 명령을 사용합니다.
Android-build-tools/27.0.3/builddump
Windows 사용자의 경우 프로세스를 쉽게 하기 위해 만든 이 도구를 참조하십시오.
뷰를 확장한 클래스를 정의했지만 레이아웃 파일에서 잘못된 이름으로 이 커스텀 뷰를 참조했을 때 이 오류가 발생한 적이 있습니다.<com.example.customview/> , , , , , 을했습니다.<com.customview/>XML 을 사용합니다.
를 만듭니다 1) libs 폴더 생성
을 복사하여 2) jar 파일을 합니다.
( jar 3) Add jar (Add jar)
후 4) 청소 후 실행
:- ) :: : - )
믿거나 말거나...스택 오버플로우에서 찾은 거의 모든 답을 시험해 보았습니다.기계를 다시 가동하기 전까지는 아무것도 도움이 안 될 거예요.내 Android Studio는 Ubuntu 16.04 LTS에서 작동합니다.
저는 같은 문제에 직면하여 다음과 같이 해결했습니다.
빌드 메뉴에서
1- 클린 프로젝트
2- APK 구축
같은 문제가 발생했는데 샘플 코드가 디렉토리 "src"가 아닌 디렉토리 "java"에 있다는 것을 알게 되었습니다.코드를 src로 이동한 후 문제가 해결되었습니다.
, 앱 디렉토리가해 주세요(예: 「」등)./main/com/site/appname//main/com.site.appname/
잘 됐으면 좋겠다~
저도 같은 문제에 직면해 있습니다.많은 작업과 검색 끝에 해결책을 찾았습니다.프로젝트를 청소하고 apk를 구축했습니다.-빌드 ->클린 프로젝트 -빌드 -> APK 구축이 도움이 되었으면 합니다.
최근 이 문제가 발생하여 Android Studio 0.8.4를 사용하고 있습니다.
문제는 main.xml이라는 XML 메뉴 레이아웃 파일의 이름을 바꾸기로 결정한 것입니다.
마우스 오른쪽 버튼을 클릭하여 Refactor --> 이름 변경을 선택합니다.이름을 바꾸기 전에 "Search in comments and strings" 선택을 취소하고 Refactor를 누릅니다.
원래 파일명은 'main' 이었기 때문에 app.iml 및 build.gradle의 critical 경로(주로 build.gradle의 java.srcDirs)로 이름이 변경되었습니다.이 경로는 다음과 같이 정의됩니다.'src/main/java'.
이것이 이 문제를 겪고 있는 모든 사람에게 도움이 되기를 바랍니다.
버전 18에서 업그레이드 한 후에 이 문제가 발생하였습니다.업그레이드 후 다음과 같은 기능이 있습니다.프로젝트 빌드 목표는 5.01, 목표SDKVersion=21
그러나 빌드 툴은 아직 Android 4.3.1(18)에서 동작하고 있는 어플리케이션이 위의 오류로 인해 동작하지 않은 어플리케이션이 크래쉬한 것을 알 수 있었습니다.
따라서 간단한 수정은 Android SDK Build Tools 18이 아니라 최신 Android SDK Build Tools 21.1.2를 사용하는 것이었습니다.이것은 왠지 디폴트인 것 같습니다.
그 원인은 Appcompatibrary로 Actionbar의 이전 버전과의 호환성을 위해 사용하고 있습니다.
참고로 어플리케이션 호환 라이브러리를 사용하여 설정/수정해야 했습니다.$SDKInstallDIR$\Android\android-sdk\extras\android\support\v7\appcompat\project.properties target=android-21
나는 이 문제를 여러 번 겪었고 종종 의존관계에 대해 명백한 잘못을 저지르지 않았다.
이 '찾을 수 없음' 클래스가 마지막 apk에 있는지 확인하는 것이 항상 좋습니다.제 경우와 마찬가지로 문제가 발생할 경우 일반적으로 다음과 같은 문제가 발생합니다.
특정 클래스가 없는 것은 아니지만 슈퍼 클래스가 없기 때문에 로드할 수 없습니다.
확장한 클래스를 사용할 수 있는지 확인한 다음 빌드 스크립트 또는 종속성을 적절히 수정해 보십시오.
Windows에서도 같은 문제가 발생했습니다.프로젝트 경로의 이름을 공간이 포함된 경로로 변경했습니다.
프로젝트의 경로에 공백이 없는지 확인하십시오.
여기서 설명한 솔루션 --> 멀티덱스 문제 솔루션이 효과가 있었습니다.응용 프로그램콘텍스트에 추가할 필요가 있는 것은 다음과 같습니다.
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
몇 가지 원인으로 인해 이 문제가 발생했지만 스택 트레이스에서 확인되었습니다.**Unable to instantiate activity ComponentInfo{...}: java.lang.ClassNotFoundException: Didn't find class "..." on path: DexPathList[[**'에서 차이를 요..classpath작동을 멈추기 전에 말이죠
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
<classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
<classpathentry kind="src" path="gen"/>
<classpathentry kind="output" path="bin/classes"/>
</classpath>
행을 추가했습니다.
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
최종 버전은 다음과 같습니다.
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
<classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
<classpathentry kind="src" path="gen"/>
<classpathentry kind="output" path="bin/classes"/>
</classpath>
이제 됐다!=)
나도 똑같은 문제가 있었어.@weiweia의 제안대로 자바 디렉토리에서 src로 코드를 이동하는 것이 나에게 효과가 있었습니다.또한 Project --> Properties --> Java Build Path --> Order and Export에서 Android Dependencies를 삭제하고 Android 화면에는 라이브러리 프로젝트만 포함되도록 했습니다.
저도 한동안 이런 문제가 있었는데, 다른 사람들과 마찬가지로 위의 답변은 제 프로젝트에 적용되지 않았습니다.
프로젝트에서 프로젝트를 제 프로젝트에 연결했는데 다른 프로젝트의 코드가 실행될 때마다 ClassDefNotFoundError가 발생했습니다.
그래서 이게 내 해결책이었어프로젝트 속성 및 Java 빌드 경로로 이동했습니다.다른 프로젝트의 src-folder에서 자신의 프로젝트로의 「Source」탭과 「link source」를 누르고, 새로운 폴더에 「core-src」라고 이름을 붙였습니다.
이 솔루션이 도움이 되기를 바랍니다.
저도 같은 문제가 있었어요.저는 자마린을 사용하고 있습니다.안드로이드.
저의 경우 versionCode와 versionName을 변경한 것이 문제였습니다.
이렇게 세팅했을 때는 문제가 없었습니다.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="pac.ka.ge" android:versionCode="1" android:versionName="1.0" android:installLocation="auto">
이 문제를 다음과 같이 변경했을 때(버전 코드2 및 versionName 0.0.1) 문제가 발생했습니다.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package=" pac.ka.ge " android:versionCode="2" android:versionName="0.0.1" android:installLocation="auto">
다음과 같이 versionCode 2 및 versionName 1.0.0.1로 변경하여 문제를 해결했습니다.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package=" pac.ka.ge " android:versionCode="2" android:versionName="1.0.0.1" android:installLocation="auto">
왜 이것이 문제인지 잘 모르겠습니다만, Android는 낮은 versionName과 높은 versionCode를 좋아하지 않는 것 같습니다.
http://developer.android.com/guide/topics/manifest/manifest-element.html#vname에서 다음을 찾았습니다.
Android:versionCode 내부 버전 번호.이 숫자는 한 버전이 다른 버전보다 최신 버전인지 여부를 판별할 때만 사용되며 숫자가 클수록 최신 버전임을 나타냅니다.이것은 사용자에게 표시되는 버전 번호가 아닙니다.이 번호는 versionName Atribut에 의해 설정됩니다.값은 "100"과 같은 정수로 설정해야 합니다.각 후속 버전이 더 큰 번호를 갖는 한 원하는 대로 정의할 수 있습니다.예를 들어 빌드 번호일 수 있습니다.또는 "x"와 "y"를 각각 하위 및 상위 16비트로 인코딩하여 "x.y" 형식의 버전 번호를 정수로 변환할 수 있습니다.또는 새 버전이 출시될 때마다 숫자를 1개씩 늘릴 수도 있습니다.
Android:versionName 사용자에게 표시되는 버전 번호.이 속성은 원시 문자열 또는 문자열 리소스에 대한 참조로 설정할 수 있습니다.이 문자열은 사용자에게 표시하는 것 외에 다른 목적이 없습니다.versionCode Atribut에는 내부적으로 사용되는 중요한 버전 번호가 저장됩니다.
나와 같은 문제에 직면한 사람이 있을 때를 대비해서 여기에 아무 대답도 하지 않는 것이 도움이 된다.
나는 안드로이드 스튜디오 리팩터가 버그가 있어서 그랬다.클래스 외부(View)로 innerclass를 이동했으므로 직접 경로가 설정된 xml도 있습니다.이 경로는 스튜디오에서 리팩터링되지 않습니다!그리고 오류는 발생하지 않을 것이다.
이게 도움이 됐으면 좋겠네요.건배.
이 경우 Vagrant 버전을 컴파일하려고 했는데 같은 오류가 발생했습니다.그때까지 고쳤다.clean project그리고.rebuild project빌드 메뉴
저는 방금 기기를 재부팅하고 앱을 실행했습니다.그것은 문제없이 작동했다.이것이 누군가에게 도움이 되기를 바랍니다:)
API 23을 탑재한 기기에서 디버깅을 시도했을 때 Android Studio에서 이 오류가 발견되어 Android Studio를 확인해보니 API 23 버전을 설치하지 않은 것을 알 수 있었습니다.설치 후 문제를 해결했습니다.
언급URL : https://stackoverflow.com/questions/19523167/android-classnotfoundexception-didnt-find-class-on-path
'programing' 카테고리의 다른 글
| SQL 덤프를 MySQL로 가져오는 중 오류 발생: 알 수 없는 데이터베이스 / 데이터베이스를 만들 수 없습니다. (0) | 2022.11.13 |
|---|---|
| 오류: eventlet 설치 중 종료 상태 1에서 명령 'gcc'가 실패했습니다. (0) | 2022.11.13 |
| 현재 스크립트 디렉토리를 올바르게 판별하려면 어떻게 해야 합니까? (0) | 2022.11.13 |
| "Unused variable x" 경고를 억제하는 가장 좋은 방법은 무엇입니까? (0) | 2022.11.13 |
| SQL을 INSERT IN...과(와) 함께 사용할 때 오류 1064가 발생합니다.선택...중복 키 업데이트 시 (0) | 2022.11.13 |