Я видел много тем, посвященных этой ошибке, но не смог найти работающего решения.Поэтому я постараюсь полностью описать проблему.
У меня есть проект и тест проекта.Манифест моего проекта:
<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 / toto / app / Activity / 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 shell am instrument -w com.toto.app.test / android.test.InstrumentationTestRunner
com.toto.app.activity.ListActivityTest: INSTRUMENTATION_RESULT: shortMsg = java.lang.ClassNotFoundException INSTRUMENTATION_RESULT: longMsg = java.otFound..app.activity.ListActivity в загрузчике dalvik.system.PathClassLoader [/system/framework/android.test.runner.jar:/data/app/com.toto.app.test-2.apk:/data/app/com.toto.app-2.apk]
Я не понимаю, почему один класс найден, а другой нет ... В Eclipse он тоже не работает.Я пытался использовать непосредственно ListActivity в тестовом примере, но та же ошибка.Как он собирает этот apk, чтобы избежать какого-то класса?
Это полный стек при использовании adb.
Полный стек в eclipse logcat:
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