Gradle更新后LibGdx无法工作(Android Studio 3.0)

5
我最近按照这个链接的说明更新了Android Studio和Gradle到版本3.0.0:https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html 但是这样做后,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

1
你如何运行你的应用程序?编辑配置 -> 按 + -> 点击 Gradle -> 在任务输入中输入 desktop:run,然后尝试运行。 - Abdullah Tellioglu
我按照以下步骤运行它:编辑配置 - 新应用程序(Java)-选择桌面启动器和资产文件夹作为工作目录 - 最后运行,但它给了我那个错误。 - MAGS94
你能试试我的方法吗? - Abdullah Tellioglu
我也遇到了同样的问题,但是我可以通过在命令行中使用"./gradlew desktop:run"成功地运行它。 - Paul Hunnisett
4个回答

12

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

Gradle 4.1 在 LibGDX 中尚未得到支持,存在相应的问题,目前已为 Gradle 4.6 升级

当前html模块使用了被移除于Gradle 4.1版本中的已弃用jetty插件。

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

./gradlew desktop:run

暂时,在Android Studio 3.0中,您可以使用低版本的GradleAndoid-gradle-plugin并等待问题得到解决。

  • 将Gradle版本从4.1降级为3.3

    在您的项目中找到gradle文件夹,打开gradle-wrapper.properties并更改分发URL为3.3


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

    打开根目录下的 build.gradle 文件,找到 buildscript 中的 artifact 并更改版本号

  • classpath 'com.android.tools.build:gradle:2.3.3'
    
  • 在根目录下的build.gradle文件中,注释/删除repo列表中的google()

  • --------------------------------------------------------------------------------

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

    1. 将 Gradle 更新为4.6:

    2. distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
      
    3. 在项目repositories列表和根目录下的build.gradle文件中的buildScript repo列表中添加Google的Maven仓库。

    4. repositories {
          //.. 
          google()
          jcenter()         // Required for org.jetbrains.trove4j:trove4j library
      }
      
    5. 更新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设置中禁用按需配置,请选择“File”>“Settings”(Mac上为“Android Studio”>“Preferences”),在左窗格中选择“Compiler”类别,并清除“Configure on demand”复选框。

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

    6. 将Android buildToolsVersion更新为27.0.3,并将SdkVersion更新为27

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

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


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


    2
    非常感谢!升级Gradle版本的绝佳解决方案。 - elenatres

    4

    我通过强制插件使用2.3.3版本并将Gradle Wrapper属性文件还原为3.3版本来临时解决了这个问题。

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

    and build.gradle

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

    2

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


    1
    这实际上是20180718年最好的答案,因为如果你遵循维基https://github.com/libgdx/libgdx/wiki/Gradle-and-Intellij-IDEA "Running Your Project" -> "desktop",唯一需要改变的是DrLey所说的,这将保持控制台链接到错误,如果你从控制台运行,你会错过它。AS 3.1.3 LibGDX 1.9.8,PS:我不使用html模块。 - Lyoneel

    1

    我曾在Windows上工作,在终端中,您可以进入项目文件夹并使用命令运行桌面模块。

    gradlew desktop:run
    

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接