【问题标题】:Android ClassNotFoundException: Didn't find class on path: DexpathlistAndroid ClassNotFoundException:在路径上找不到类:Dexpathlist
【发布时间】:2016-03-08 18:59:48
【问题描述】:

我面临以下错误,我已经尝试了 Stackoverflow 的几乎所有解决方案。我是android新手,所以可能我不了解原因。 我正在按照以下说明测试 libgdx 项目:https://github.com/libgdx/libgdx/wiki/Setting-up-your-Development-Environment-%28Eclipse%2C-Intellij-IDEA%2C-NetBeans%29

我按顺序安装了以下提到的工具:

  1. JDK(java 版本 1.8.0.73)
  2. 面向 Java 开发人员的 Eclipse IDE 版本:Mars.2 Release (4.5.2)。
  3. SDK(我有 SDK 工具 24.4.1 和 SDK 构建工具 23.0.2 和 23.0.1)
  4. 来自 Eclipse 中的 URL 的 Eclipse 的 Android 开发工具:https://dl-ssl.google.com/android/eclipse/
  5. Gradle 2.11 - 我解压缩了 gradle-all-2.11.zip 并保存在我的本地计算机上。

现在,当我使用 gdx-setup.jar 生成一个非常基本的示例 libgdx 项目并将包命名为 my-gdx-game 时,它​​创建了一个桌面版本(java 应用程序)和一个 android 版本(android 应用程序)

我在通过 jar 构建项目时使用 Build tools V 23.0.1。我的 Eclipse 屏幕如下所示:

当我右键单击 my-gdx-game-desktop 并作为 Java 应用程序运行时,它成功运行并显示和图像(项目就是显示图像)。

现在,对于 android 项目,我创建了一个 AVD - Nexus 5,Android 4.4.2(api 19),CPU:ARM(armeabi-v7a),使用主机 GPU。我的 manifest.xml 文件如下:

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

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/GdxTheme" >
    <activity
        android:name="com.mygdx.game.AndroidLauncher"
        android:label="@string/app_name" 
        android:screenOrientation="landscape"
            android:configChanges="keyboard|keyboardHidden|orientation|screenSize">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

</manifest>

Project> Properties> Android:仅选择 Android 4.4.2 (API 19)

现在,当我右键单击 project>run as> android 应用程序时,会打开 AVD 并生成以下错误:

03-08 13:44:35.110: W/dalvikvm(1968): Unable to resolve superclass of Lcom/mygdx/game/AndroidLauncher; (3)
03-08 13:44:35.110: W/dalvikvm(1968): Link of class 'Lcom/mygdx/game/AndroidLauncher;' failed
03-08 13:44:35.110: D/AndroidRuntime(1968): Shutting down VM
03-08 13:44:35.120: W/dalvikvm(1968): threadid=1: thread exiting with uncaught exception (group=0xb1ae4ba8)
03-08 13:44:35.140: E/AndroidRuntime(1968): FATAL EXCEPTION: main
03-08 13:44:35.140: E/AndroidRuntime(1968): Process: com.mygdx.game, PID: 1968
03-08 13:44:35.140: E/AndroidRuntime(1968): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.mygdx.game/com.mygdx.game.AndroidLauncher}: java.lang.ClassNotFoundException: Didn't find class "com.mygdx.game.AndroidLauncher" on path: DexPathList[[zip file "/data/app/com.mygdx.game-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.mygdx.game-1, /system/lib]]
03-08 13:44:35.140: E/AndroidRuntime(1968):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2110)
03-08 13:44:35.140: E/AndroidRuntime(1968):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
03-08 13:44:35.140: E/AndroidRuntime(1968):     at android.app.ActivityThread.access$800(ActivityThread.java:135)
03-08 13:44:35.140: E/AndroidRuntime(1968):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
03-08 13:44:35.140: E/AndroidRuntime(1968):     at android.os.Handler.dispatchMessage(Handler.java:102)
03-08 13:44:35.140: E/AndroidRuntime(1968):     at android.os.Looper.loop(Looper.java:136)
03-08 13:44:35.140: E/AndroidRuntime(1968):     at android.app.ActivityThread.main(ActivityThread.java:5001)
03-08 13:44:35.140: E/AndroidRuntime(1968):     at java.lang.reflect.Method.invokeNative(Native Method)
03-08 13:44:35.140: E/AndroidRuntime(1968):     at java.lang.reflect.Method.invoke(Method.java:515)
03-08 13:44:35.140: E/AndroidRuntime(1968):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
03-08 13:44:35.140: E/AndroidRuntime(1968):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
03-08 13:44:35.140: E/AndroidRuntime(1968):     at dalvik.system.NativeStart.main(Native Method)
03-08 13:44:35.140: E/AndroidRuntime(1968): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.mygdx.game.AndroidLauncher" on path: DexPathList[[zip file "/data/app/com.mygdx.game-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.mygdx.game-1, /system/lib]]
03-08 13:44:35.140: E/AndroidRuntime(1968):     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
03-08 13:44:35.140: E/AndroidRuntime(1968):     at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
03-08 13:44:35.140: E/AndroidRuntime(1968):     at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
03-08 13:44:35.140: E/AndroidRuntime(1968):     at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
03-08 13:44:35.140: E/AndroidRuntime(1968):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2101)
03-08 13:44:35.140: E/AndroidRuntime(1968):     ... 11 more
03-08 13:49:35.320: I/Process(1968): Sending signal. PID: 1968 SIG: 9

我已经尝试了很多来自 stackoverflow 的答案,但在我的情况下似乎都没有。请帮忙。

【问题讨论】:

  • 检查项目和外部依赖。
  • 当我这样做时,上面的错误消失了,但另一个错误出现了:Conversion to Dalvik format failed with error 1

标签: java android eclipse gradle libgdx


【解决方案1】:

所以现在问题解决了。

  1. 现在检查我的项目和外部依赖项。
  2. 我的 manifest.xml 现在有 android:name=".AndroidLauncher"。
  3. 将 Eclipse java 版本更改为 1.7 对我有用。在 Eclipse 中,转到 Windows->Preferences->Java->Compiler 并将“Compiler compliance level”设置为 1.7。

第三步改变了我的游戏规则。 谢谢大家的帮助。

【讨论】:

    【解决方案2】:

    这可能是您的活动路径。在你的清单中试试这个:

    <activity
      android:name=".AndroidLauncher"
    

    因为可能你上面有这个

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.mygdx.game"
    

    【讨论】:

      【解决方案3】:

      我还将描述我的案例,我试图将一个项目用作“库”(通过在我的第二个项目中包含所有资源)。只是将源添加为项目(一个是核心,一个是 android)来构建路径会导致与前面提到的相同的错误(没有找到类等)

      为了确保我的第二个 Android 项目没问题,我不仅需要在“Properties->Java Build Path->Projects”中包含源文件夹,还需要转到“Order and Export”选项卡,移动“core”和“android”条目到顶部并检查它们(默认情况下,它们是未选中的)。毕竟,我的 Android 应用程序就像一个魅力。

      所以,如果您正在使用现有项目构建另一个项目并且之前发布的解决方案不起作用,也许我的解决方案会有所帮助(我花了将近半天的时间试图为我的场景找到合适的解决方案......)

      【讨论】:

        【解决方案4】:

        在尝试使用 LibGDX 从 Eclipse 运行我的 android 应用程序时,我遇到了类似的问题。

        我也尝试过前面提到的步骤:

        My project and external dependencies are checked now.
        My manifest.xml has android:name=".AndroidLauncher" now.
        Changing the Eclipse java version to 1.7 worked for me. In Eclipse, go to Windows->Preferences->Java->Compiler and set "Compiler compliance level" to 1.7.
        

        在我的 Java Build Path->Order and Exports 中选中以下框的额外步骤修复了 dalvik 错误和缺少的类。我的 Dalvik Error 1 问题似乎来自 Android Private Libraries。检查 GDX 订单和导出后,未找到修复的类。

        【讨论】:

          【解决方案5】:

          对我来说,上述解决方案均未应用。今天我使用的是 Eclipse Oxygen 和 Java 1.8。 LibGDX 项目设置只是犯了一个小错误,使其无法开箱即用:

          1. manifest 或 java 版本也必须更改。
          2. 必须在“订购和导出”选项卡中更改 android 项目的构建路径,您还必须检查“项目和外部依赖项”。

          Build Path

          【讨论】:

            猜你喜欢
            • 2015-07-01
            • 2017-10-21
            • 2018-11-20
            • 1970-01-01
            • 1970-01-01
            • 2018-05-28
            • 1970-01-01
            • 2016-02-04
            • 2017-09-12
            相关资源
            最近更新 更多