Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Exception in thread "main" java.lang.UnsatisfiedLinkError: no lwjgl in java.library.path

I'm building the basic Slick game example explained here: http://slick.cokeandcode.com/wiki/doku.php?id=01_-_a_basic_slick_game, and I'm running into some problems. Specifically, the game compiles just fine, but when I try to run it, Java complains:

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)

This is my source code:

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();
    }
}

The only change I've made to the original (which reports the same error), was that I have removed the package declaration.

I downloaded Slick from here: http://slick.cokeandcode.com/, by clicking on the "Download Full Distribution" link, and here's how my Slick folder looks like: enter image description here

I'm compiling the game with this command:

javac -cp lib/*:. SlickBasicGame.java

And trying to run it with this one:

java -cp lib/*:. SlickBasicGame

like image 758
corazza Avatar asked Nov 16 '12 12:11

corazza


1 Answers

Add a -Djava.library.path=path/to/dir to the commandline or as an VM option in your IDE so that lwjgl is able to find the folder containing the native files.

like image 195
Saddam Abu Ghaida Avatar answered Sep 19 '22 10:09

Saddam Abu Ghaida