Android – Невозможно создать экземпляр активности – ClassNotFound – Сбой на одном затмении, но не другой

Когда я пытаюсь загрузить свою программу, я получаю ошибку «Невозможно выполнить операцию». Одна вещь, которая меня озадачивает, – это тот же самый код, который работает на моем старом ПК. Я только что построил новый с новым eclipse / android SDK / и т. Д. У меня обе машины работают с одним и тем же кодом, один отлично работает, а другой дает эту ошибку.

Есть предположения?

Изменить. Одна вещь, которую я замечаю в стеке:

Вызвано: java.lang.ClassNotFoundException: com.voldaran.puzzle.graBLOX.PopActivity в загрузчике dalvik.system.PathClassLoader [/data/app/com.voldaran.puzzle.graBLOX-2.apk]

Он перечисляет graBLOX-2.apk. Почему он использует «-2.apk»?

Когда я вручную воспроизвожу эту ошибку на рабочем компьютере, она не отображает эту последнюю часть [] 'd.

Android Manifest

<application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".PopActivity" android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" android:finishOnTaskLaunch="true" android:configChanges="orientation|keyboardHidden" android:screenOrientation="portrait" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> 

стек

  04-21 17:33:42.284: E/AndroidRuntime(4045): FATAL EXCEPTION: main 04-21 17:33:42.284: E/AndroidRuntime(4045): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.voldaran.puzzle.graBLOX/com.voldaran.puzzle.graBLOX.PopActivity}: java.lang.ClassNotFoundException: com.voldaran.puzzle.graBLOX.PopActivity in loader dalvik.system.PathClassLoader[/data/app/com.voldaran.puzzle.graBLOX-2.apk] 04-21 17:33:42.284: E/AndroidRuntime(4045): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1569) 04-21 17:33:42.284: E/AndroidRuntime(4045): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 04-21 17:33:42.284: E/AndroidRuntime(4045): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 04-21 17:33:42.284: E/AndroidRuntime(4045): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 04-21 17:33:42.284: E/AndroidRuntime(4045): at android.os.Handler.dispatchMessage(Handler.java:99) 04-21 17:33:42.284: E/AndroidRuntime(4045): at android.os.Looper.loop(Looper.java:130) 04-21 17:33:42.284: E/AndroidRuntime(4045): at android.app.ActivityThread.main(ActivityThread.java:3683) 04-21 17:33:42.284: E/AndroidRuntime(4045): at java.lang.reflect.Method.invokeNative(Native Method) 04-21 17:33:42.284: E/AndroidRuntime(4045): at java.lang.reflect.Method.invoke(Method.java:507) 04-21 17:33:42.284: E/AndroidRuntime(4045): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 04-21 17:33:42.284: E/AndroidRuntime(4045): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 04-21 17:33:42.284: E/AndroidRuntime(4045): at dalvik.system.NativeStart.main(Native Method) 04-21 17:33:42.284: E/AndroidRuntime(4045): Caused by: java.lang.ClassNotFoundException: com.voldaran.puzzle.graBLOX.PopActivity in loader dalvik.system.PathClassLoader[/data/app/com.voldaran.puzzle.graBLOX-2.apk] 04-21 17:33:42.284: E/AndroidRuntime(4045): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240) 04-21 17:33:42.284: E/AndroidRuntime(4045): at java.lang.ClassLoader.loadClass(ClassLoader.java:551) 04-21 17:33:42.284: E/AndroidRuntime(4045): at java.lang.ClassLoader.loadClass(ClassLoader.java:511) 04-21 17:33:42.284: E/AndroidRuntime(4045): at android.app.Instrumentation.newActivity(Instrumentation.java:1021) 04-21 17:33:42.284: E/AndroidRuntime(4045): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1561) 

Я часто сталкивался с той же ситуацией (проект был первоначально выполнен на 32-битной машине, а затем импортирован на другую 64-битную машину).

В проектах Android под Eclipse Juno (64 бит):

  • Нажмите правую кнопку мыши в проекте в «Project Explorer», затем выберите «Свойства»,
  • Выберите «Java Build Path» в списке слева.
  • Сделайте щелчок на вкладке «Заказ и экспорт».
  • Отметьте два флажка для «Частных библиотек Android» и «Зависимости Android» соответственно, затем нажмите кнопку «ОК».
  • Очистить проект (ы) и запустить.

Попробуй это. Добавьте этот фрагмент кода в свой PopActivity и вызовите эту функцию из PopActivity умолчанию конструктора.

 private static void fixClassLoaderIssue() { ClassLoader myClassLoader = MyClass.class.getClassLoader(); Thread.currentThread().setContextClassLoader(myClassLoader); } 

У меня была аналогичная проблема, и это исправило это. Теперь это решение действительно не отвечает, почему проблема существует, но я действительно не смог ее найти.
Для справки проверьте этот ответ.

Вы попробовали проект чистым? Обычно это решает проблемы с загрузчиком.

В моем случае это неправильное имя пакета в файле AndroidManifest.

 <manifest xmlns:android="http://schemas.android.com/apk/res/android" *package="com.app"* android:versionCode="1" android:versionName="1.0" >