3

일부 클래스를 추가하고 매니페스트 파일을 편집 할 때까지 내 android 앱이 정상적으로 실행되고있었습니다. 내가 실행하거나, 안드로이드 2.2 내 안드로이드 에뮬레이터에서 응용 프로그램 충돌 응용 프로그램을 디버깅하려고 내가 ClassNotFoundException가를 얻을 때Android 액티비티 : ClassNotFoundException

지금, 다음 같이

D/AndroidRuntime( 275): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<< 
D/AndroidRuntime( 275): CheckJNI is ON 
D/AndroidRuntime( 275): --- registering native functions --- 
I/ActivityManager( 59): Starting activity: Intent { act=android.intent.action.MAIN  cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=de.bastian.gpstracker/.MainActivity } 
I/ActivityManager( 59): Start proc de.bastian.gpstracker for activity de.bastian.gpstracker/.MainActivity: pid=281 uid=10036 gids={} 
D/AndroidRuntime( 275): Shutting down VM 
D/jdwp ( 275): adbd disconnected 
D/AndroidRuntime( 281): Shutting down VM 
W/dalvikvm( 281): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 
E/AndroidRuntime( 281): FATAL EXCEPTION: main 
E/AndroidRuntime( 281): java.lang.RuntimeException: Unable to instantiate application de.bastian.gpstracker: java.lang.ClassNotFoundException: de.bastian.gpstracker in loader dalvik.system.PathClassLoader[/data/app/de.bastian.gpstracker-1.apk] 
E/AndroidRuntime( 281):  at android.app.ActivityThread$PackageInfo.makeApplication(ActivityThread.java:649) 
E/AndroidRuntime( 281):  at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4232) 
E/AndroidRuntime( 281):  at android.app.ActivityThread.access$3000(ActivityThread.java:125) 
E/AndroidRuntime( 281):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2071) 
E/AndroidRuntime( 281):  at android.os.Handler.dispatchMessage(Handler.java:99) 
E/AndroidRuntime( 281):  at android.os.Looper.loop(Looper.java:123) 
E/AndroidRuntime( 281):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
E/AndroidRuntime( 281):  at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime( 281):  at java.lang.reflect.Method.invoke(Method.java:521) 
E/AndroidRuntime( 281):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
E/AndroidRuntime( 281):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
E/AndroidRuntime( 281):  at dalvik.system.NativeStart.main(Native Method) 
E/AndroidRuntime( 281): Caused by: java.lang.ClassNotFoundException: de.bastian.gpstracker in loader dalvik.system.PathClassLoader[/data/app/de.bastian.gpstracker-1.apk] 
E/AndroidRuntime( 281):  at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243) 
E/AndroidRuntime( 281):  at java.lang.ClassLoader.loadClass(ClassLoader.java:573) 
E/AndroidRuntime( 281):  at java.lang.ClassLoader.loadClass(ClassLoader.java:532) 
E/AndroidRuntime( 281):  at android.app.Instrumentation.newApplication(Instrumentation.java:942) 
E/AndroidRuntime( 281):  at android.app.ActivityThread$PackageInfo.makeApplication(ActivityThread.java:644) 
E/AndroidRuntime( 281):  ... 11 more 
W/ActivityManager( 59): Force finishing activity de.bastian.gpstracker/.MainActivity 
D/dalvikvm( 149): GC_FOR_MALLOC freed 4092 objects/248904 bytes in 134ms 
W/ActivityManager( 59): Activity pause timeout for HistoryRecord{43fa91d0 de.bastian.gpstracker/.MainActivity} 
I/ActivityManager( 59): Displayed activity com.android.launcher/com.android.launcher2.Launcher: 12561 ms (total 12561 ms) 
W/ActivityManager( 59): Activity destroy timeout for HistoryRecord{43fa91d0 de.bastian.gpstracker/.MainActivity} 
D/KeyguardViewMediator( 59): pokeWakelock(5000) 
D/KeyguardViewMediator( 59): pokeWakelock(5000) 
I/ARMAssembler( 59): generated scanline__00000177:03515104_00001001_00000000 [ 91 ipp] (114 ins) at [0x325a10:0x325bd8] in 590637 ns 
I/ARMAssembler( 59): generated scanline__00000077:03515104_00000000_00000000 [ 33 ipp] (47 ins) at [0x3261f0:0x3262ac] in 261841 ns 
W/WindowManager( 59): No window to dispatch pointer action 1 
I/Process ( 281): Sending signal. PID: 281 SIG: 9 
I/ActivityManager( 59): Process de.bastian.gpstracker (pid 281) has died. 

내가 내 프로젝트 구성에 뭔가 잘못 같아요 .

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="de.bastian.gpstracker" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="10" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" 
     android:name="de.bastian.gpstracker" > 
     <activity 
      android:name="de.bastian.gpstracker.MainActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 

솔직히 말해서, 나는 나에게 마지막으로 나는이 파일을 변경하지만를 기억하지 않는, 모든 것이 여기 잘 될 것 같다 : 여기 내 매니페스트 파일입니다.

sultion을 검색하는 동안 동일한 문제를 설명하는 Android Activity ClassNotFoundException - tried everything 링크가 함께 제공되었지만 단일 프로젝트로만 작업 할 때 솔루션과 관련이 없습니다.

위의 오류 로그에서 생성 된 apk의 파일 이름이 '-1'로 끝나는 것을 확인했습니다. 어쩌면 그것은 오류 일 수도 있습니다. 어쩌면 그것은 일식/adt가 일을 처리하는 방법 일 수 있습니다. 또한 프로젝트를 실행/디버깅하려고 할 때 MainActivity.class, MainActivity $ 1.class, MainActivity $ 2.class라는 이름의 여러 클래스 파일이 만들어졌지만 하나의 MainActivity.java 파일 (및 MainActivity $ 2.file 또는 그와 비슷한 것).

누군가 여기에 무슨 문제가 있는지 아이디어가 있다면 좋을 것입니다.

+1

패키지 세부 정보가 포함되어 있습니까? – adarsh

답변

2

당신은 무엇이든지

de.bastian.gpstracker 

패키지 이름을 참조하는 존재하지 않는 클래스를 어떤 클래스를 참조하지하는 응용 프로그램 노드를 설정한다. gpstracker이 해당 문자열에서 마지막 항목이므로 클래스 로더는 gpstracker이 클래스임을 가정하고로드하려고 시도하며 실패합니다.

그래서 Application 클래스의 이름 (Application까지 확장)을 씁니다.

<application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" 
     android:name="de.bastian.gpstracker.MyApplicationClass" > 

은 그냥 보이는 있도록 Application를 확장하는 클래스는,이 노드의 android:name 속성을 가지고이 마음에 들지 당신이 경우

<application 
      android:allowBackup="true" 
      android:icon="@drawable/ic_launcher" 
      android:label="@string/app_name" 
      android:theme="@style/AppTheme" > 
0

변경 당신을 응용 프로그램 태그를 매니페스트에 표시하려면

<application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="de.bastian.gpstracker.MainActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

응용 프로그램 태그에서 name 속성을 제거하십시오. 오해의 여지가 있지만, 앱 이름과 관련이 없으며 실제로 애플리케이션을로드하기 전에로드 할 추가 클래스의 이름입니다. 이것이 ClassNotFoundException을 얻는 이유입니다. 그것을 제거하면 작동합니다 :