2012-11-16 35 views
6

Tôi đang xây dựng ví dụ trò chơi Slick cơ bản được giải thích ở đây: http://slick.cokeandcode.com/wiki/doku.php?id=01_-_a_basic_slick_game và tôi đang gặp một số sự cố. Cụ thể, các trò chơi chỉ cần biên dịch tốt, nhưng khi tôi cố gắng chạy nó, Java phàn nàn:Ngoại lệ trong chủ đề "chính" java.lang.UnsatisfiedLinkError: không có lwjgl trong java.library.path

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) 

Đây là mã nguồn của tôi:

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

Sự thay đổi duy nhất mà tôi đã thực hiện với bản gốc (trong đó báo cáo cùng một lỗi), là tôi đã gỡ bỏ khai báo gói.

tôi tải Slick từ đây: http://slick.cokeandcode.com/, bằng cách nhấp vào "Tải Full phân phối" liên kết, và dưới đây là cách thư mục Slick của tôi trông giống như: enter image description here

Tôi đang biên soạn các trò chơi với lệnh này:

javac -cp lib/*:. SlickBasicGame.java

Và cố gắng để chạy nó với một này:

java -cp lib/*:. SlickBasicGame

Trả lời

7

Thêm -Djava.library.path=path/to/dir vào dòng lệnh hoặc dưới dạng tùy chọn VM trong IDE của bạn để lwjgl có thể tìm thư mục chứa các tệp gốc.

+4

Tôi nên lưu ý rằng đường dẫn/đến/dir nên trỏ đến thư viện .dll trong thư viện lwjgl của bạn, chẳng hạn như% lwjgl_dir% \ native \ windows. – Chechulin

Các vấn đề liên quan