无法解析Activity的超类

时间:2012-09-03 07:28:24

标签: android android-activity

我在基于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

我的活动类是这样的:

  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 {

构建期间没有错误。我已经重新创建了一个新项目,干净+构建,仍然存在问题。

我正在使用带有Android 4.0 Emulator的Eclipse IDE。问题留在任何模拟器或真实设备上。

由于 Souvik

5 个答案:

答案 0 :(得分:63)

我在 GOOGLE IO 2013 之后立即面对此问题 当我将 ADT插件,Android SDK工具更新到第22版时 和 Android SDK平台 - 修订版17的工具

以前工作过的所有项目都在更新后无缘无故地开始抛出ClassNotFoundException。 然后我注意到有一个名为Android Private Libraries的新Android软件包,经过几个小时的尝试后我找到了解决这个问题的方法。

右键单击您的项目,然后

转到构建路径 - >配置构建路径 - >订单和出口

当你在那里时,你应该检查 Android私人图书馆,然后点击确定。

如果您仍然遇到问题,请删除bin文件夹中的所有文件并重建您的项目。

希望这能解决您的问题

答案 1 :(得分:3)

要确保您的jar实际上是在构建时导出的,您应该:

  • 将其放入libs文件夹
  • 或在项目属性中填写与您的jar相对应的复选框> Java构建路径>订单和导出标签

答案 2 :(得分:0)

如果您使用的是某些外部库,除了在Eclipse中链接它外,不要忘记将它们放在应用程序的“libs”文件夹中。它应该在/ src,/ res等附近。只需/libs/yourLibrary.jar。

它会告诉编译器(不完全一样)将此库包含在APK中。

答案 3 :(得分:0)

实际上,我导入的库也是一个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>

答案 4 :(得分:0)

我有同样的问题。 我所做的是:

  1. 配置构建路径。
  2. 选择订单和导出标签,
  3. 选择所有列出的路径或JAR文件。
  4. 试试吧!
  5. 祝你好运。