Linux下的Eclipse上的LWJGL(Xubuntu)

时间:2014-06-13 13:31:19

标签: 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);

2 个答案:

答案 0 :(得分:0)

我的朋友在第一学期遇到了同样的问题。这帮助了他很多。希望它可以帮助你。

http://javarevisited.blogspot.ca/2012/03/javalangunsatisfiedlinkerror-no-dll-in.html

答案 1 :(得分:0)

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

java.awt.Toolkit.getDefaultToolkit();

LinuxSysImplementation

我看到LWJGL forums有关此问题的讨论以及最后的潜在解决方案。他们谈论这是一个无头的问题,所以也许可以考虑看看你是否可以找到一个不同版本的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机器上安装一个不同的非无头版Java,因为这似乎表明awt无法初始化。