Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Linux下Eclipse上的LWJGL(Xubuntu)_Java_Linux_Eclipse_Libgdx_Lwjgl - Fatal编程技术网

Java Linux下Eclipse上的LWJGL(Xubuntu)

Java Linux下Eclipse上的LWJGL(Xubuntu),java,linux,eclipse,libgdx,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 classl

我正在使用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)

我朋友在第一学期也有同样的问题。这对他帮助很大。希望对你有帮助


这个问题似乎是由Lwjgl试图在Linux上加载awt引起的,它的行如下:

java.awt.Toolkit.getDefaultToolkit();
在他们的

我看到有一个关于这个问题的讨论,最后还有一个潜在的解决方案。他们谈论这是一个无头的问题,所以也许考虑看看看看你是否可以找到一个不同版本的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无法初始化。

问题是,我无法直接控制游戏使用的库,因为我把它留给了LibGDX框架。你能提供你的LibGDX版本吗,以及一个小项目,它可以复制这个错误。这可能有助于其他人理解您为什么会出现此错误。该项目规模很大,大约有20个类,但它可以通过从终端运行的已导出的*.jar文件进行复制。它可以在我的dropbox共享链接上找到:你在Jar中没有遗漏任何东西,它在Ubuntu和Windows上运行良好。你在Xubuntu上运行什么版本/发行版的Java?它在我的Ubuntu上也可以运行,但在我的Xubuntu上不能。我在Xubuntu和Ubuntu上使用openjdk-7-jre-headless。你能显示Xubuntu机器的java版本输出吗?我在代码中的任何地方都没有使用java.awt。我该怎么办?Libgdx使用LWJGL,LWJGL使用java.awt。您可能希望将此作为错误直接报告给LWJGL。我知道在编写Libgdx时没有运行最新版本的LWJGL,因为没有人将其放在Maven上。安装不同的Java版本IBM而不是OpenJDK是否有帮助?是的,这可能解决问题。你也可以试试甲骨文。我要出去看看,我猜有一个损坏的文件。。。但这很奇怪
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);
    }
}