我正在使用 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();
我看到有关于 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/