11

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

构建过程中没有错误。我重新创建了一个新项目,clean+build,问题仍然存在。

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

谢谢苏维克

4

5 回答 5

63

我在GOOGLE IO 2013之后遇到了这个问题, 当我更新我的ADT 插件、Android SDK 工具到修订版 22Android SDK 平台工具到修订版 17

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

然后右键单击您的项目

转到构建路径-> 配置构建路径-> 订购和导出

当您在那里时,您应该检查Android Private Libraries,然后单击确定。

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

希望这可以解决您的问题

于 2013-05-17T10:47:48.480 回答
3

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

  • 把它放在libs文件夹里
  • 或在项目属性 > Java 构建路径 > 订购和导出选项卡中填写与您的 jar 对应的复选框
于 2012-09-03T07:37:55.453 回答
0

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

它会告诉编译器(不完全是)将此库包含到您的 APK 中。

于 2012-09-03T07:37:46.513 回答
0

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

  1. 配置构建路径。
  2. 选择订单和导出选项卡,
  3. 选择所有列出的路径或 JAR 文件。
  4. 试试看!

祝你好运。

于 2013-04-19T08:03:25.410 回答
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>
于 2012-09-04T19:12:26.943 回答