Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.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 Slick2D测试应用程序导致不满意的LinkException:错误的ELF类_Java_Eclipse_Opengl_Lwjgl_Slick2d - Fatal编程技术网

Java Slick2D测试应用程序导致不满意的LinkException:错误的ELF类

Java Slick2D测试应用程序导致不满意的LinkException:错误的ELF类,java,eclipse,opengl,lwjgl,slick2d,Java,Eclipse,Opengl,Lwjgl,Slick2d,我正在编写一个基于java的游戏,尝试使用Slick2D。但是,当我尝试运行测试应用程序(如下所示)时,我发现: OpenJDK Server VM warning: You have loaded library /home/andrzej/Programming/Java/HeroesOfZether/lib/lwjgl/native/linux/liblwjgl.so which might have disabled stack guard. The VM will try to fix

我正在编写一个基于java的游戏,尝试使用Slick2D。但是,当我尝试运行测试应用程序(如下所示)时,我发现:

OpenJDK Server VM warning: You have loaded library /home/andrzej/Programming/Java/HeroesOfZether/lib/lwjgl/native/linux/liblwjgl.so which might have disabled stack guard. The VM will try to fix the stack guard now.
It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.
Exception in thread "main" java.lang.UnsatisfiedLinkError: /home/andrzej/Programming/Java/HeroesOfZether/lib/lwjgl/native/linux/liblwjgl.so: /home/andrzej/Programming/Java/HeroesOfZether/lib/lwjgl/native/linux/liblwjgl.so: wrong ELF class: ELFCLASS64 (Possible cause: architecture word width mismatch)
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1965)
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1890)
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1880)
    at java.lang.Runtime.loadLibrary0(Runtime.java:849)
    at java.lang.System.loadLibrary(System.java:1088)
    at org.lwjgl.Sys$1.run(Sys.java:72)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.lwjgl.Sys.doLoadLibrary(Sys.java:66)
    at org.lwjgl.Sys.loadLibrary(Sys.java:96)
    at org.lwjgl.Sys.<clinit>(Sys.java:117)
    at org.lwjgl.opengl.Display.<clinit>(Display.java:135)
    at org.newdawn.slick.AppGameContainer$1.run(AppGameContainer.java:39)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.newdawn.slick.AppGameContainer.<clinit>(AppGameContainer.java:36)
    at simpleslickgame.SimpleSlickGame.main(SimpleSlickGame.java:34)

有人能告诉我我做错了什么以及如何修复它吗?

这个
错误的ELF类:ELFCLASS64(可能的原因:体系结构字宽不匹配)
意味着您试图在32位JVM中运行64位LWJGL

您必须切换到64位JVM,或者如果您已经安装在上,则可以设置
LD_LIBRARY_PATH
以使Linux能够找到正确的库。见[此处]

如果您使用的是32位机器,则必须切换到32位LWJGL


进一步参考:

问题是,我不知道怎么做。网站上没有单独的32位下载,就像我说的,只保留名称中带有“32”的库只会导致不满意的链接错误,保留并重命名它们也会产生错误。您是否尝试下载最新的LWJGL和以下内容以使其顺利使用?您使用的是JDK的哪种版本?根据该项目的说法,它已经死了(很抱歉),但您可能会找到一个仍在开发中的fork。我搜索了一段时间,Slick论坛似乎很活跃,而且还有一个“slick2d maven”存储库也没有被忽略,因此我正在寻找的特定2D项目似乎仍然受到支持。另外,谢谢你的指导,但这让一切变得更加复杂,因为现在我有四个不同的指导,或多或少都是官方的,每一个都描述了其他要采取的步骤,其他要做的事情,一个说从lwjgl包中找到本地人,另一个说从Slick包中。。。现在不是凌晨4点,但我怀疑白天会有什么变化。在切换到slick package(因为它提供了所有提到的文件)的所有内容并完全忽略lwjgl之后,终于发生了一些事情。我的意思是,它等待了一秒钟,然后向我抛出了一个不满意的linkexception:无法加载liblwjgl。因此,在我刚刚检查的路径上,它确实是。我放弃了今天。
package simpleslickgame;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.newdawn.slick.AppGameContainer;
import org.newdawn.slick.BasicGame;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.SlickException;

public class SimpleSlickGame extends BasicGame
{
    public SimpleSlickGame(String gamename)
    {
        super(gamename);
    }

    @Override
    public void init(GameContainer gc) throws SlickException {}

    @Override
    public void update(GameContainer gc, int i) throws SlickException {}

    @Override
    public void render(GameContainer gc, Graphics g) throws SlickException
    {
        g.drawString("Howdy!", 10, 10);
    }

    public static void main(String[] args)
    {
        try
        {
            AppGameContainer appgc;
            appgc = new AppGameContainer(new SimpleSlickGame("Simple Slick Game"));
            appgc.setDisplayMode(640, 480, false);
            appgc.start();
        }
        catch (SlickException ex)
        {
            Logger.getLogger(SimpleSlickGame.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}