【问题标题】:Exception in thread "main" java.lang.UnsatisfiedLinkError: no lwjgl in java.library.path线程“主”java.lang.UnsatisfiedLinkError 中的异常:java.library.path 中没有 lwjgl
【发布时间】:2012-11-16 12:32:39
【问题描述】:

我正在构建此处解释的基本 Slick 游戏示例:http://slick.cokeandcode.com/wiki/doku.php?id=01_-_a_basic_slick_game,但遇到了一些问题。具体来说,游戏编译得很好,但是当我尝试运行它时,Java 抱怨:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no lwjgl in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1856)
    at java.lang.Runtime.loadLibrary0(Runtime.java:845)
    at java.lang.System.loadLibrary(System.java:1084)
    at org.lwjgl.Sys$1.run(Sys.java:75)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.lwjgl.Sys.doLoadLibrary(Sys.java:68)
    at org.lwjgl.Sys.loadLibrary(Sys.java:84)
    at org.lwjgl.Sys.<clinit>(Sys.java:101)
    at org.lwjgl.opengl.Display.<clinit>(Display.java:128)
    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 SlickBasicGame.main(SlickBasicGame.java:79)

这是我的源代码:

import org.newdawn.slick.AppGameContainer;
import org.newdawn.slick.BasicGame;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.Image;
import org.newdawn.slick.Input;
import org.newdawn.slick.SlickException;

public class SlickBasicGame extends BasicGame{

    Image plane = null;
    Image land = null;
    float x = 400;
    float y = 300;
    float scale = 1;

    public SlickBasicGame()
    {
        super("Slick2D Path2Glory - SlickBasicGame");
    }

    @Override
    public void init(GameContainer gc)
            throws SlickException {
        plane = new Image("data/plane.png");
        land = new Image("data/land.jpg");
    }

    @Override
    public void update(GameContainer gc, int delta)
            throws SlickException
    {
        Input input = gc.getInput();

        if(input.isKeyDown(Input.KEY_A))
        {
            plane.rotate(-0.2f * delta);
        }

        if(input.isKeyDown(Input.KEY_D))
        {
            plane.rotate(0.2f * delta);
        }

        if(input.isKeyDown(Input.KEY_W))
        {
            float hip = 0.4f * delta;

            float rotation = plane.getRotation();

            x+= hip * Math.sin(Math.toRadians(rotation));
            y-= hip * Math.cos(Math.toRadians(rotation));
        }

        if(input.isKeyDown(Input.KEY_2))
        {
            scale += (scale >= 5.0f) ? 0 : 0.1f;
            plane.setCenterOfRotation(plane.getWidth()/2.0f*scale, plane.getHeight()/2.0f*scale);
        }
        if(input.isKeyDown(Input.KEY_1))
        {
            scale -= (scale <= 1.0f) ? 0 : 0.1f;
            plane.setCenterOfRotation(plane.getWidth()/2.0f*scale, plane.getHeight()/2.0f*scale);
        }
    }

    public void render(GameContainer gc, Graphics g)
            throws SlickException
    {
        land.draw(0, 0);

        plane.draw(x, y, scale);

    }

    public static void main(String[] args)
            throws SlickException
    {
         AppGameContainer app =
            new AppGameContainer( new SlickBasicGame() );

         app.setDisplayMode(800, 600, false);
         app.start();
    }
}

我对原始版本所做的唯一更改(报告相同的错误)是我删除了包声明。

我从这里下载了 Slick:http://slick.cokeandcode.com/,点击“下载完整发行版”链接,我的 Slick 文件夹如下所示:

我正在用这个命令编译游戏:

javac -cp lib/*:. SlickBasicGame.java

并尝试用这个来运行它:

java -cp lib/*:. SlickBasicGame

【问题讨论】:

    标签: java linux javac slick2d


    【解决方案1】:

    -Djava.library.path=path/to/dir 添加到命令行或作为 IDE 中的 VM 选项,以便 lwjgl 能够找到包含本机文件的文件夹。

    【讨论】:

    • 我要注意path/to/dir应该指向你lwjgl库中的.dll库,比如%lwjgl_dir%\native\windows。
    猜你喜欢
    • 1970-01-01
    • 2015-08-30
    • 2016-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多