首页 > 解决方案 > Libgdx 在 Fedora 31 上不起作用 - 无法初始化类 org.lwjgl.Sys

问题描述

我从官方网站下载了 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

标签: javagradlelibgdxlwjglfedora

解决方案


我没有名声,所以我不能编辑或评论,但经过一些小小的 tweeks,我能够让 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中,相应地更新导入,并将所有实例替换LwjglLwjgl3。例如,new LwjglApplicationConfiguration()变成new Lwjgl3ApplicationConfiguration()

推荐阅读