【问题标题】:LibGdx doesn't working after updating Gradle (Android Studio 3.0)更新 Gradle (Android Studio 3.0) 后 LibGdx 无法正常工作
【发布时间】:2018-04-07 10:56:00
【问题描述】:

我最近按照此链接https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html中的说明将 android studio 和 gradle 更新到了 3.0.0 版

执行此 libgdx 桌面项目后不起作用。

它给了我这个错误

java.lang.NoClassDefFoundError: com/badlogic/gdx/ApplicationListener
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
    at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
    at java.lang.Class.getMethod0(Class.java:3018)
    at java.lang.Class.getMethod(Class.java:1784)
    at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)
Caused by: java.lang.ClassNotFoundException: com.badlogic.gdx.ApplicationListener
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 7 more
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main"

这里是 build.gradle 文件

buildscript {
    repositories {
        mavenLocal()
        mavenCentral()
        maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
        jcenter()
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0'
    }

我只将google()添加到存储库并将gradle版本编辑为3.0.0

gradle-wrapper.properties我添加了这一行

distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip

【问题讨论】:

  • 您如何运行您的应用程序? Edit Configuration -> Press + -> Click Gradle -> desktop:run in Tasks input 并尝试运行。
  • 我按照编辑配置运行它 - 新应用程序 (java) - 选择桌面启动器和资产文件夹作为工作目录 - 最后运行但它给了我这个错误
  • 你能用我的方法试试吗?
  • 我也有同样的问题,但我可以使用 ./gradlew desktop:run 从 CLI 成功运行它

标签: android android-studio gradle libgdx


【解决方案1】:

Android Studio 3.0 使用 gradle-4.1com.android.tools.build:gradle:3.0.0

LibGDX 尚不支持Gradle 4.1,同样有一个issue,现在Gradle 4.6 为upgraded

目前 html 模块使用已弃用的 jetty 插件,该插件已在 Gradle 4.1 版本中删除。

但是使用终端可以运行桌面模块,我没有在 windows 上测试过,但在 Mac 上它工作正常。

./gradlew desktop:run

目前您可以在 Android Studio 3.0 中使用较低版本的GradleAndoid-gradle-plugin 并等待问题修复。

  • 将 Gradle 版本从 4.1 降级到 3.3

    在你的项目中找到 gradle 文件夹,打开 gradle-wrapper.properties 并将 distributionUrl 更改为 3.3

    distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
    
  • 将 Android-gradle-plugin 版本从 3.0.0 降级到 2.3.3

    打开 root build.gradle 文件并在 buildscript 中找到工件并 换个版本

    classpath 'com.android.tools.build:gradle:2.3.3'
    
  • 从根build.gradle 文件内的回购列表中评论/删除google()

----------------------------------------------- ----------------------------------

编辑:将 LibGDX 项目更新为 Gradle 4.6 - 作为用户

  1. 将 Gradle 升级到 4.6:

    distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
    
  2. 将 Google 的 Maven 存储库添加到项目存储库列表以及根 build.gradle 文件的 buildScript 存储库列表中。

    repositories {
        //.. 
        google()
        jcenter()         // Required for org.jetbrains.trove4j:trove4j library
    }
    
  3. 更新 Android Gradle 插件:

    classpath 'com.android.tools.build:gradle:3.1.3'

    Android Gradle 插件的已知问题

    使用 Gradle 4.6 及更高版本按需配置:

    如果您将 Android Gradle 插件 3.0.x 或 3.1.x 与 Gradle 4.6 一起使用 及以上,您应该禁用按需配置以避免一些 不可预测的构建错误。 (如果您使用的是 Android Gradle 插件 3.2.0 或更高版本,您无需执行任何操作即可禁用按需配置。)

    在您的gradle.properties 文件中禁用按需配置,如下所示:

    • org.gradle.configureondemand=false

    • 要在 Android Studio 设置中禁用按需配置,请选择文件 > 设置(Mac 上的 Android Studio > 首选项),选择左侧窗格中的编译器类别,然后清除按需配置复选框。

      在 Android Studio 3.2 Beta 1 及更高版本中,已删除启用按需配置的选项。

  4. 将 Android buildToolsVersion 更新为 27.0.3,将 SdkVersion 更新为 27

  5. 从 android build.gradle 文件中的 sourceSets 中删除 instrumentTest.setRoot('tests')
  6. 将根build.gradle文件中的所有compile替换为implementation
  7. 在 html 模块中添加了新的GWT Gradle Plugin,检查 html 模块的最新build.gradle

使用Run Configuration 或在终端上使用gradle task 运行您的项目。


如果您要创建新项目,请使用最新的buildgdx-setup.jar

【讨论】:

  • 非常感谢!升级 gradle 版本的绝佳解决方案。
【解决方案2】:

我通过强制插件使用 2.3.3 并将 gradle 包装器属性文件恢复为 3.3 来临时解决此问题

distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip

和 build.gradle

dependencies {
   classpath 'com.android.tools.build:gradle:2.3.3'
}

从存储库中注释掉 google() 并告诉 android studio 3.0 停止提醒您将当前项目的 gradle 插件升级到 3.0.0。

编辑:以上抄袭我答案的人,真丢脸!

【讨论】:

    【解决方案3】:

    编辑配置 -> 桌面 -> 在启动前将“构建”更改为“构建项目”。 (使用 + 和 - 按钮)。

    【讨论】:

    • 这实际上是目前 20180718 的最佳答案,因为如果您关注 wiki github.com/libgdx/libgdx/wiki/Gradle-and-Intellij-IDEA“运行您的项目”->“桌面”,您唯一需要更改 DrLey 所说的内容,这个维护指向错误的控制台链接,如果您从控制台运行,您会错过它。 AS 3.1.3 LibGDX 1.9.8,PS:我不使用 html 模块。
    【解决方案4】:

    使用windows,在终端中你可以进入项目文件夹并使用命令运行桌面模块。

    gradlew desktop:run
    

    【讨论】:

      猜你喜欢
      • 2015-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-08
      • 2022-01-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多