2011-09-08 4 views
4

이 오류를 다루는 많은 주제를 보았지만 제대로 된 해결책을 찾지 못했습니다. 그래서 나는 그 문제를 완전히 기술하려고 노력할 것입니다.Android 테스트 악기에서 ClassNotFoundException이 발생했습니다.

프로젝트 및 프로젝트 테스트가 있습니다. 내 프로젝트 매니페스트 :

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.toto.app" 
    android:versionCode="3" 
    android:versionName="0.3.1"> 
    ... 
    <application android:icon="@drawable/icon" android:label="@string/app_name"> 
    ... 
    </application> 
</manifest> 

그리고 내 테스트 프로젝트 매니페스트 : 여기

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.toto.app.test" 
    android:versionCode="1" 
    android:versionName="1.0"> 
    <uses-sdk android:minSdkVersion="4" /> 

    <instrumentation android:targetPackage="com.toto.app" android:name="android.test.InstrumentationTestRunner" /> 

    <application android:icon="@drawable/icon" android:label="@string/app_name"> 
    <uses-library android:name="android.test.runner" /> 
    </application> 
</manifest> 

내가 테스트 할 활동 : SRC/COM/토토/응용 프로그램/활동/ListActivity, 나는 야해 이 활동을 시작하는 LaunchActivity (매니페스트의 시작 활동으로 선언 됨)

테스트에서 내 ListActivityTest는 동일한 경로 (src/com/toto/app/activity)에 있습니다. 또한 src/com/toto/app/test를 사용해 보았습니다. 소스는 다음과 같습니다

public class ListActivityTest extends ActivityInstrumentationTestCase2<LaunchActivity>{ 

    private Solo solo; 

    public ListActivityTest() { 
    super(LaunchActivity.class); 
    } 

    public void setUp() throws Exception { 
    solo = new Solo(getInstrumentation(), getActivity()); 
    solo.wait(2000); 
    } 
} 

LaunchActivity 찾을 것 같다하지만이 ListActivity를 시작할 때, 나는 오류가있어 :

% ADB 쉘 오전 악기 -w com.toto.app합니다. 시험/android.test.InstrumentationTestRunner

com.toto.app.activity.ListActivityTest : INSTRUMENTATION_RESULT : shortMsg = java.lang.ClassNotFoundException가 INSTRUMENTATION_RESULT : longMsg = java.lang.ClassNotFoundException가 : com.toto.app.activity.ListActivity 로더에서 dalvik.system.PathClassLoader [/ system/f ramework/android.test.runner.jar : /data/app/com.toto.app.test-2.apk : /data/app/com.toto.app-2.apk]

I 돈 왜 하나의 클래스가 발견되고 다른 클래스가 발견되지 않는지 이해하지 못한다. Eclipse에서 같은 방식으로 실패한다. 나는 테스트 케이스에서 ListActivity를 직접 사용하려고 시도했지만 동일한 오류가 발생했습니다. 어떤 수업을 피하기 위해이 APK를 어떻게 구축할까요?


adb를 사용할 때 전체 스택입니다.

이클립스 로그 캣의 전체 스택 내 활동이 FragmentActivity 아닌 간단한 활동을 확장하기 때문에

java.lang.NoClassDefFoundError: com.toto.app.activity.ListActivity 
at com.toto.app.activity.LaunchActivity.onCreate(LaunchActivity.java:19) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1072) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1794) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1851) 
at android.app.ActivityThread.access$1500(ActivityThread.java:132) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1038) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:143) 
at android.app.ActivityThread.main(ActivityThread.java:4293) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:507) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.ClassNotFoundException: com.toto.app.activity.ListActivity in loader dalvik.system.PathClassLoader[/system/framework/android.test.runner.jar:/data/app/com.toto.app.test-2.apk:/data/app/com.toto.app-1.apk] 
at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:551) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:511) 
... 14 more 
+0

그의이 전체 스택 추적? 그렇지 않은 경우 전체 오류 로그를 제공하십시오. –

+0

주 프로젝트의 매니페스트에서 ListActivity를 선언 했습니까? – marc1s

+0

예, 확실히, 응용 프로그램이 작동합니다. –

답변

4

그것은이다.

문제를 해결하려면 기본 프로젝트에서 android-support-v4.jar 파일을 내 보내야했습니다. 다른 사람을 도움이 될 것입니다

희망 ...

export jar

+0

나는 같은 예외를 가지고 있었다. 가져온 지원 - V4를 Gradle로 가져 왔습니다. 고마워. 고마워. – azizbekian

관련 문제