Java Android Studio | Libgdx |添加Kryonet库-NoClassDefFoundError

Java Android Studio | Libgdx |添加Kryonet库-NoClassDefFoundError,java,android,android-studio,libgdx,kryonet,Java,Android,Android Studio,Libgdx,Kryonet,我目前正在开发一款Android游戏,希望实现多人游戏。 所以我想用Kryonet: 我下载了图书馆() 在我的核心模块中创建了一个libs文件夹 将kryonet-2.21-all.jar复制到其中 并将其作为模块添加到build.gradle中: dependencies { compile files('src/libs/kryonet-2.21-all.jar') } 在Android Studio中,它似乎可以工作,我可以访问所有导入等,但在我的设备上运行应用程序时。。它崩

我目前正在开发一款Android游戏,希望实现多人游戏。 所以我想用Kryonet:

  • 我下载了图书馆()
  • 在我的核心模块中创建了一个libs文件夹
  • 将kryonet-2.21-all.jar复制到其中
  • 并将其作为模块添加到build.gradle中:

    dependencies {
     compile files('src/libs/kryonet-2.21-all.jar')  }
    
在Android Studio中,它似乎可以工作,我可以访问所有导入等,但在我的设备上运行应用程序时。。它崩溃了

07-16 00:00:44.419  12176-12196/com.cookedapps.robotredemption.android E/AndroidRuntime﹕ FATAL EXCEPTION: GLThread 3363
Process: com.cookedapps.robotredemption.android, PID: 12176
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/esotericsoftware/kryonet/Server;
        at com.cookedapps.robotredemption.server.GameServer.<init>(GameServer.java:20)
        at com.cookedapps.robotredemption.states.Play.<init>(Play.java:73)
        at com.cookedapps.robotredemption.handlers.GameStateManager.getState(GameStateManager.java:39)
        at com.cookedapps.robotredemption.handlers.GameStateManager.pushState(GameStateManager.java:49)
        at com.cookedapps.robotredemption.handlers.GameStateManager.<init>(GameStateManager.java:21)
        at com.cookedapps.robotredemption.main.Game.create(Game.java:41)
        at com.badlogic.gdx.backends.android.AndroidGraphics.onSurfaceChanged(AndroidGraphics.java:241)
        at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1520)
        at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1248)
 Caused by: java.lang.ClassNotFoundException: Didn't find class "com.esotericsoftware.kryonet.Server" on path: DexPathList[[zip file "/data/app/com.cookedapps.robotredemption.android-2/base.apk"],nativeLibraryDirectories=[/data/app/com.cookedapps.robotredemption.android-2/lib/arm, /vendor/lib, /system/lib]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
        at com.cookedapps.robotredemption.server.GameServer.<init>(GameServer.java:20)
        at com.cookedapps.robotredemption.states.Play.<init>(Play.java:73)
        at com.cookedapps.robotredemption.handlers.GameStateManager.getState(GameStateManager.java:39)
        at com.cookedapps.robotredemption.handlers.GameStateManager.pushState(GameStateManager.java:49)
        at com.cookedapps.robotredemption.handlers.GameStateManager.<init>(GameStateManager.java:21)
        at com.cookedapps.robotredemption.main.Game.create(Game.java:41)
        at com.badlogic.gdx.backends.android.AndroidGraphics.onSurfaceChanged(AndroidGraphics.java:241)
        at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1520)
        at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1248)
Suppressed: java.lang.ClassNotFoundException: com.esotericsoftware.kryonet.Server
        at java.lang.Class.classForName(Native Method)
        at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
        at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
        ... 10 more
 Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available
07-16 00:00:44.419 12176-12196/com.cookedapps.robotredemption.android E/AndroidRuntime﹕ 致命异常:GL3363线程
进程:com.cookedapps.robotredemption.android,PID:12176
java.lang.NoClassDefFoundError:解析失败:Lcom/EstericSoftware/kryonet/Server;
位于com.cookedapps.robotredemption.server.GameServer。(GameServer.java:20)
访问com.cookedapps.robotredemption.states.Play.(Play.java:73)
位于com.cookedapps.robotredemption.handlers.GameStateManager.getState(GameStateManager.java:39)
位于com.cookedapps.robotredemption.handlers.GameStateManager.pushState(GameStateManager.java:49)
访问com.cookedapps.robotredemption.handlers.GameStateManager.(GameStateManager.java:21)
访问com.cookedapps.robotredemption.main.Game.create(Game.java:41)
位于com.badlogic.gdx.backends.android.AndroidGraphics.onSurfaceChanged(AndroidGraphics.java:241)
在android.opengl.GLSurfaceView$GLThread.guarderun(GLSurfaceView.java:1520)
位于android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1248)
原因:java.lang.ClassNotFoundException:在路径:DexPathList[[zip文件”//data/app/com.cookedapps.robotredemption.android-2/base.apk“],NativeLibrary目录=[/data/app/com.cookedapps.robotredemption.android-2/lib/arm,/vendor/lib,/system/lib]]
位于dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:511)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:469)
位于com.cookedapps.robotredemption.server.GameServer。(GameServer.java:20)
访问com.cookedapps.robotredemption.states.Play.(Play.java:73)
位于com.cookedapps.robotredemption.handlers.GameStateManager.getState(GameStateManager.java:39)
位于com.cookedapps.robotredemption.handlers.GameStateManager.pushState(GameStateManager.java:49)
访问com.cookedapps.robotredemption.handlers.GameStateManager.(GameStateManager.java:21)
访问com.cookedapps.robotredemption.main.Game.create(Game.java:41)
位于com.badlogic.gdx.backends.android.AndroidGraphics.onSurfaceChanged(AndroidGraphics.java:241)
在android.opengl.GLSurfaceView$GLThread.guarderun(GLSurfaceView.java:1520)
位于android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1248)
抑制:java.lang.ClassNotFoundException:com.esotericsoftware.kryonet.Server
位于java.lang.Class.classForName(本机方法)
位于java.lang.BootClassLoader.findClass(ClassLoader.java:781)
位于java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:504)
... 10多
原因:java.lang.NoClassDefFoundError:使用引导类加载程序找不到类;没有可用的堆栈
我在cmd和其他方面尝试了/gradlew clean,但没有任何帮助。
请给我一个提示,几个小时以来我一直在做这件事。。谢谢大家!

确保添加:

dependencies {
 compile files('src/libs/kryonet-2.21-all.jar') 
}


在build.gradle文件中,而不仅仅是桌面项目中,请确保添加:

dependencies {
 compile files('src/libs/kryonet-2.21-all.jar') 
}


在build.gradle文件中,不仅是桌面项目,我也找到了一个解决方案。我有一个错误的方法。 如何将Kryonet添加到libgdx-Android项目:

  • 转到root build.gradle
  • 转到
    项目(“:core”)
    -
    依赖项
    并添加:
编译“com.esotericsoftware:kryo:3.0.1”
编译(“com.esotericsoftware:kryonet:2.22.0-RC1”){
排除模块:“kryo”
}

  • 将项目与Gradle文件同步
重要的一点是添加Kryonet、排除Kryo和分别添加Kryo。这样可以避免此异常:

UNEXPECTED TOP-LEVEL EXCEPTION: com.android.dex.DexException: Multiple dex files define

我希望我能在这方面帮助别人

我找到了一个解决方案。我有一个错误的方法。 如何将Kryonet添加到libgdx-Android项目:

  • 转到root build.gradle
  • 转到
    项目(“:core”)
    -
    依赖项
    并添加:
编译“com.esotericsoftware:kryo:3.0.1”
编译(“com.esotericsoftware:kryonet:2.22.0-RC1”){
排除模块:“kryo”
}

  • 将项目与Gradle文件同步
重要的一点是添加Kryonet、排除Kryo和分别添加Kryo。这样可以避免此异常:

UNEXPECTED TOP-LEVEL EXCEPTION: com.android.dex.DexException: Multiple dex files define

我希望我能在这方面帮助别人

我也遇到了同样的问题,解决方案是在android/libs中复制jar,或者在root build.gradle->inside android project->inside dependencies->
编译文件树(dir:'../core/libs',include:'*.jars')
我也遇到了同样的问题,解决方案是在android/libs内部复制jar,或者在root build.gradle->inside android project->inside dependencies->compile fileTree(dir:'../core/libs',include:'*.jars')DexException与Kryonet无关,这只意味着您已经达到了在不启用multidex的情况下可以使用的方法的最大数量。因此,您可以通过排除任何任意包使方法的总大小/数量变小来实现这一点。如何将compile设置为最新版本?DexException与Kryonet无关,它只意味着您已经达到了在不启用multidex的情况下可以使用的方法的最大数量。因此,您可以通过排除任意包来实现这一点