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

时间:2016-03-08 18:59:49

标签: java android eclipse gradle libgdx

我面临以下错误,我几乎尝试了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中的Android开发工具,来自eclipse中的URL:https://dl-ssl.google.com/android/eclipse/
  5. Gradle 2.11 - 我解压缩gradle-all-2.11.zip并保存在我的本地机器上。
  6. 现在,当我使用gdx-setup.jar生成一个非常基本的示例libgdx项目,并将包命名为my-gdx-game时,它创建了一个桌面版本(java应用程序)和一个android版本(android应用程序)

    我在通过jar构建项目时使用Build tools 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>
    

    项目&GT;性状&gt; Android:仅选择Android 4.4.2(API 19)

    现在,当我右键点击项目&gt;运行为&gt;在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的答案,但似乎没有一个在我的情况下有用。请帮忙。

4 个答案:

答案 0 :(得分:5)

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

  1. 现在检查我的项目和外部依赖项。
  2. 我的manifest.xml现在有android:name =“。AndroidLauncher”。
  3. 将Eclipse java版本更改为1.7对我有用。在Eclipse中,转到Windows-&gt; Preferences-&gt; Java-&gt; Compiler并将“Compiler compliance level”设置为1.7。
  4. 第三步是改变我的游戏。 谢谢你们的帮助。

答案 1 :(得分:0)

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

<activity
  android:name=".AndroidLauncher"

因为可能你有以上

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

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

尝试使用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-&gt; Order and Exports中检查以下框的额外步骤修复了dalvik错误和缺少的类。我的Dalvik Error 1问题似乎来自Android私有图书馆。检查GDX订单和出口后未找到的类。

Java Build Path: Order and Exports

相关问题