Android ClassNotFoundException:在路径上找不到类:Dexpathlist

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android ClassNotFoundException:在路径上找不到类:Dexpathlist相关的知识,希望对你有一定的参考价值。

我面临以下错误,我几乎尝试了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. Eclipse IDE for Java Developers版本:Mars.2发布(4.5.2)。
  3. SDK(我有SDK工具24.4.1和SDK构建工具23.0.2和23.0.1)
  4. 来自eclipse中的URL的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工具V 23.0.1。我的eclipse屏幕看起来像这样:

Eclipse当我右键单击my-gdx-game-desktop和Run as 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>

项目>属性> Android:仅选择Android 4.4.2(API 19)

现在,当我右键单击项目>运行为> 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

My project Build path

我已经从stackoverflow尝试了很多答案,但似乎没有一个在我的情况下工作。请帮忙。

答案

所以现在问题已经解决了。

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

第三步是改变我的游戏。谢谢你们的帮助。

另一答案

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

<activity
  android:name=".AndroidLauncher"

因为可能你有以上这个

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

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

为了确保我的第二个Android项目没问题,我不仅需要在“属性 - > Java构建路径 - >项目”中包含源文件夹,而且我还需要转到“订购和导出”选项卡,移动“核心”和“android”条目到顶部并检查它们(默认情况下,它们是未选中的)。毕竟,我的Android应用程序就像一个魅力。

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

另一答案

尝试使用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私有图书馆。检查GDX订单和出口后未找到的类已修复。

Java Build Path: Order and Exports

另一答案

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

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

Build Path

以上是关于Android ClassNotFoundException:在路径上找不到类:Dexpathlist的主要内容,如果未能解决你的问题,请参考以下文章

IDEA攻略合辑

java_父类

自定义声纳规则 - ClassNotFoundException: com.sonar.sslr.api.AstAndTokenVisitor

致命异常:java.lang.NoClassDefFoundError 解析失败:某些设备中的 Ljava/time/Month

Android逆向系列文章— Android基础逆向

Android 逆向Android 权限 ( Android 逆向中使用的 android.permission 权限 | Android 系统中的 Linux 用户权限 )