Не удалось разрешить суперкласс действия

Я получаю эту ошибку в новом проекте на основе OpenGL ES 10:

  09-03 12:44:07.870: W/dalvikvm(599): Unable to resolve superclass of Lcom/example/basicgl10test/MainActivity; (416)
  09-03 12:44:07.870: W/dalvikvm(599): Link of class 'Lcom/example/basicgl10test/MainActivity;' failed
  09-03 12:44:07.870: D/AndroidRuntime(599): Shutting down VM
  09-03 12:44:07.910: W/dalvikvm(599): threadid=1: thread exiting with uncaught exception (group=0x409c01f8)
  09-03 12:44:07.920: I/dalvikvm(599): Wrote stack traces to '/data/anr/traces.txt'
  09-03 12:44:07.980: E/AndroidRuntime(599): FATAL EXCEPTION: main
  09-03 12:44:07.980: E/AndroidRuntime(599): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.basicgl10test/com.example.basicgl10test.MainActivity}: java.lang.ClassNotFoundException: com.example.basicgl10test.MainActivity
  09-03 12:44:07.980: E/AndroidRuntime(599):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1880)
  09-03 12:44:07.980: E/AndroidRuntime(599):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
  09-03 12:44:07.980: E/AndroidRuntime(599):    at android.app.ActivityThread.access$600(ActivityThread.java:123)
  09-03 12:44:07.980: E/AndroidRuntime(599):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
  09-03 12:44:07.980: E/AndroidRuntime(599):    at android.os.Handler.dispatchMessage(Handler.java:99)
  09-03 12:44:07.980: E/AndroidRuntime(599):    at android.os.Looper.loop(Looper.java:137)
  09-03 12:44:07.980: E/AndroidRuntime(599):    at android.app.ActivityThread.main(ActivityThread.java:4424)
  09-03 12:44:07.980: E/AndroidRuntime(599):    at java.lang.reflect.Method.invokeNative(Native Method)
  09-03 12:44:07.980: E/AndroidRuntime(599):    at java.lang.reflect.Method.invoke(Method.java:511)
  09-03 12:44:07.980: E/AndroidRuntime(599):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
  09-03 12:44:07.980: E/AndroidRuntime(599):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
  09-03 12:44:07.980: E/AndroidRuntime(599):    at dalvik.system.NativeStart.main(Native Method)
  09-03 12:44:07.980: E/AndroidRuntime(599): Caused by: java.lang.ClassNotFoundException: com.example.basicgl10test.MainActivity
  09-03 12:44:07.980: E/AndroidRuntime(599):    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
  09-03 12:44:07.980: E/AndroidRuntime(599):    at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
  09-03 12:44:07.980: E/AndroidRuntime(599):    at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
  09-03 12:44:07.980: E/AndroidRuntime(599):    at android.app.Instrumentation.newActivity(Instrumentation.java:1023)
  09-03 12:44:07.980: E/AndroidRuntime(599):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1871)
  09-03 12:44:07.980: E/AndroidRuntime(599):    ... 11 more
  09-03 12:44:08.061: W/ActivityManager(92):   Force finishing activity com.example.basicgl10test/.MainActivity

My Activity Class выглядит следующим образом:

  package com.example.basicgl10test;
  import com.example.gl10gameadvlib.GL10GameActivity;
  import com.example.gl10gameadvlib.Screen;
  public class MainActivity extends GL10GameActivity {

Родительская активность подобна этому в другом пакете:

  package com.example.gl10gameadvlib;
  import javax.microedition.khronos.egl.EGLConfig;
  import javax.microedition.khronos.opengles.GL10;
  public abstract class GL10GameActivity extends Activity {

Во время сборки ошибок нет. Я воссоздал новый проект, чистую + сборку тоже, все еще проблема сохраняется.

Я использую Eclipse IDE с эмулятором Android 4.0. Проблема остается с любым эмулятором или реальным устройством.

Спасибо Souvik

Ответ 1

Я столкнулся с этой проблемой сразу после GOOGLE IO 2013 когда я обновил плагин ADT, инструменты Android SDK до версии 22 и Android-платформы SDK для версии 17

Все мои проекты, которые ранее работали, начали бросать ClassNotFoundException после обновления без причины. Затем я заметил, что есть новый Android-пакет под названием "Частные библиотеки Android", и после нескольких часов попыток я нашел способ исправить это.

Щелкните правой кнопкой мыши на своем проекте, затем

Перейти к Путь сборки- > Настроить путь сборки → Заказ и экспорт

когда вы там находитесь, вы должны проверить частные библиотеки Android и затем нажмите "ОК".

если вы все еще сталкиваетесь с проблемой, удалите все файлы внутри папки bin и перестройте проект.

Надеюсь, что это решит вашу проблему.

Ответ 2

Чтобы убедиться, что ваша банка фактически экспортирована при сборке, вы должны либо:

  • поместите его в папку libs
  • или установите флажок, соответствующий вашему банку в свойствах проектa > путь сборки Java > вкладка "Заказ и экспорт"

Ответ 3

Если вы используете некоторые внешние библиотеки, за исключением ссылки на Eclipse, не забудьте поместить их в папку "libs" в приложении. Он должен быть рядом /src,/res и т.д. Просто /libs/yourLibrary.jar.

Он сообщит компилятору (не совсем), чтобы включить эту библиотеку в ваш APK.

Ответ 4

Собственно, библиотека, которую я импортирую, также является проектом Android, и я определил ее как библиотеку. В других проектах он работает одинаково.

Мой манифест выглядит так:

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

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="15" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

    <!-- Only Single Touch and OpenGLES less than 2.0 versions used by default -->
    <!-- We will use both multi and single touch handlers by using a class based SDK Version qualifier -->
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

</manifest>

Ответ 5

У меня такая же проблема. Я сделал следующее:

  • Настроить путь сборки.
  • Выберите вкладку "Заказ и экспорт",
  • Выберите весь указанный путь или файл JAR.
  • И попробуйте!

Удачи.