【问题标题】:Libgdx doesn't work on Fedora 31 - Could not initialize class org.lwjgl.SysLibgdx 在 Fedora 31 上不起作用 - 无法初始化类 org.lwjgl.Sys
【发布时间】:2020-09-11 14:53:36
【问题描述】:

我从官方网站下载了 libgdx(所以我想它是最新的),然后在 Intellij 中通过 gradle 打开它。我没有更改任何代码并编译了默认代码。这是我的构建配置:

应用程序不工作,我收到了这条消息:

Exception in thread "LWJGL Application" java.lang.NoClassDefFoundError: Could not initialize class org.lwjgl.Sys
at org.lwjgl.opengl.Display.<clinit>(Display.java:135)
at com.badlogic.gdx.backends.lwjgl.LwjglGraphics.setVSync(LwjglGraphics.java:592)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:126)

我正在使用 Fedora 31 和 GNOME 3.34.5。你知道如何解决它吗?

编辑: 我试过另一种方式: 从 libgdx 的 github 克隆代码并按照他们的 wiki 中的说明进行操作:

必须关闭本机二进制文件才能运行。这些二进制文件是在快照构建服务器上构建的,因此您需要运行一个任务来关闭它们。即使您计划稍后自己构建原生程序,也建议您将其关闭,以便您可以在进行下一步之前测试您的开发环境是否已设置。 从 LibGDX 根目录 通过 Gradle:

./gradlew fetchNatives


After running this I received:

    FAILURE: Build failed with an exception.

What went wrong:
Could not initialize class org.codehaus.groovy.runtime.InvokerHelper

【问题讨论】:

  • 当你说你“下载了 libgdx”时,你是去download page 下载旧版本构建,还是使用 gradle 安装它?
  • 我从网站下载了安装应用程序。有没有更新的地方?
  • 我不知道有新版本,但我想确定您使用的不是旧版本,而且您似乎没有。

标签: java gradle libgdx lwjgl fedora


【解决方案1】:

我在尝试使用 java 14 和/或 gradle 6.6.1 运行 libgdx 项目时遇到了同样的问题。

Exception in thread "LWJGL Application" java.lang.NoClassDefFoundError: Could not initialize class org.lwjgl.Sys

当我尝试使用 gradle 6.6.1 和 java 14 运行项目时出现,另一个错误:

Could not initialize class org.codehaus.groovy.runtime.InvokerHelper

当我尝试使用旧版本的 gradle 但仍在使用 java 14 时出现。

也许降级到 java 11 会有所帮助?它解决了我的问题...

【讨论】:

    【解决方案2】:

    如果您使用的是 java 8 以上版本,请尝试更改此设置

    dependencies {
        api "com.badlogicgames.gdx:gdx-backend-lwjgl:$gdxVersion"
    }
    

    到这里

    dependencies {
        api "com.badlogicgames.gdx:gdx-backend-lwjgl3:$gdxVersion"     
    }
    

    【讨论】:

      【解决方案3】:

      我没有名声,所以我无法编辑或评论,但经过几个小周,我能够让 alekseymishanin 的解决方案发挥作用。

      背景信息:Ubuntu 20.04,当我从 JDK 8 切换到 16 时,示例 libGDX 无法构建。

      修复

      1. 将 gradle 包装器升级到 7.0。您可能已经这样做了,因为没有此修复程序,您会收到编译时错误:./gradlew wrapper --gradle-version 7.0
      2. 通过将 api "com.badlogicgames.gdx:gdx-backend-lwjgl:$gdxVersion" 替换为 api "com.badlogicgames.gdx:gdx-backend-lwjgl3:$gdxVersion" 来切换到 build.gradle 中的 lwgl3
      3. DesktopLauncher.java 中,相应地更新导入,并将Lwjgl 的所有实例替换为Lwjgl3。例如,new LwjglApplicationConfiguration() 变为 new Lwjgl3ApplicationConfiguration()

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-03
        • 2020-12-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多