java - Linux (Xubuntu) 下 Eclipse 上的 LWJGL

标签 java linux eclipse libgdx lwjgl

我正在使用 Xubuntu,并且我有一个基于 LibGDX 的游戏项目。在 Windows 下运行它效果很好。但我已经在 Linux 上安装了 Eclipse,当尝试运行该项目时,出现以下错误:

Exception in thread "main" java.lang.UnsatisfiedLinkError: Native Library /usr/lib/jvm/java-7-openjdk-i386/jre/lib/i386/libawt.so already loaded in another classloader
at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1931)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1890)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1872)
at java.lang.Runtime.loadLibrary0(Runtime.java:849)
at java.lang.System.loadLibrary(System.java:1088)
at sun.security.action.LoadLibraryAction.run(LoadLibraryAction.java:67)
at sun.security.action.LoadLibraryAction.run(LoadLibraryAction.java:47)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Toolkit.loadLibraries(Toolkit.java:1650)
at java.awt.Toolkit.<clinit>(Toolkit.java:1672)
at org.lwjgl.LinuxSysImplementation.<clinit>(LinuxSysImplementation.java:50)
at org.lwjgl.Sys.createImplementation(Sys.java:126)
at org.lwjgl.Sys.<clinit>(Sys.java:111)
at org.lwjgl.openal.AL.<clinit>(AL.java:59)
at com.badlogic.gdx.backends.lwjgl.audio.OpenALAudio.<init>(OpenALAudio.java:72)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.<init>(LwjglApplication.java:82)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.<init>(LwjglApplication.java:64)
at cz.vilix.main.Desktop.main(Desktop.java:30)

我尝试在互联网上查找此内容,但没有结果。

第 30 行(发生错误的地方)是我尝试运行游戏的行:

new LwjglApplication(game = new Game(), config);

最佳答案

此问题似乎是由 Lwjgl 尝试使用以下行在 Linux 上加载 awt 引起的:

java.awt.Toolkit.getDefaultToolkit();

在他们的LinuxSysImplementation

我看到有关于 LWJGL forums 的讨论关于这一点以及最后的潜在解决方案。他们说这是 headless 的一个问题,所以也许可以考虑看看是否可以找到不同版本的 Java 来使用。您可以尝试Oracle的版本看看问题是否仍然存在。

这不是最好的解决方案,但它似乎是由您正在使用的 Java 版本和特定的 Linux 版本不正确引起的。

编辑:

一种可能的解决方案是将上面的行放入用于启动 libgdx 的 java 文件的静态类初始值设定项中。实际上,目标是让该行代码不引发异常,或者编辑 lwjgl 以在引发时忽略异常。

public class DesktopLauncher {
    static {
        java.awt.Toolkit.getDefaultToolkit();
    }

    public static void main(final String[] arg) {
        final LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();
        new LwjglApplication(new Game(), config);
    }
}

另一个想法可能是在 Xubuntu 机器上安装不同的非 headless 版本的 Java,因为这似乎表明 awt 无法初始化。

关于java - Linux (Xubuntu) 下 Eclipse 上的 LWJGL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24206569/

相关文章:

从数组转换为 vector 时的java泛型问题

Java - 为什么即使调用了有效资源,也会执行自定义 404 错误页面?

Linux如何将时间格式转换为纪元时间?

android - 如何阻止 ADT Logcat View 在 Eclipse 中自动弹出?

eclipse - Xtext 与 GMF 集成

java - 以编程方式创建和加入 Hyperledger Fabric channel

java - net.sf.jasperreports.engine.util.JRResourcesUtil.findClassLoaderResource(Ljava/lang/String;Ljava/lang/ClassLoader;)

java - 使用 Lars Vogel "Eclipse Products and Deployment - Tutorial"创建 Eclipse RCP 应用程序

linux - 在 Linux 中查找哪个驱动器对应哪个 USB 大容量存储设备

linux - gawk 字符串提取 ([ :alnum][:alnum][:alnum] and [:alnum])