2012-11-16 26 views
6

Burada anlatılan temel Slick oyun örneğini yapıyorum: http://slick.cokeandcode.com/wiki/doku.php?id=01_-_a_basic_slick_game ve bazı sorunlara rastlıyorum. Özellikle, oyun gayet güzel derler, ama bunu çalıştırmayı denediğinizde, Java yakınır:"ana" iş parçacığında özel durum java.lang.UnsatisfiedLinkError: hayır lwjgl in 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) 

Bu benim kaynak kodu:

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

orijinal yaptığımız tek değişiklik (Aynı hatayı rapor eden), paket bildirimini kaldırmıştım. bağlantısını "Tam Dağıtım indir" üzerine tıklayarak, http://slick.cokeandcode.com/ ve buradaki gibi benim Kaygan klasör nasıl göründüğü:

buradan Kaygan indirilen bu komutla oyunu derleme enter image description here

:

javac -cp lib/*:. SlickBasicGame.java

Ve bu bir ile çalıştırmaya çalışırken:

java -cp lib/*:. SlickBasicGame

cevap

7

lwjgl, yerel dosyaları içeren klasörü bulabilmesi için komut satırına veya IDE'nizde bir VM seçeneği olarak -Djava.library.path=path/to/dir ekleyin.

+4

Yol/to/dir'in lwjgl kitaplığınızda,% lwjgl_dir% \ native \ windows gibi .dll kitaplıklarına işaret etmesi gerektiğini unutmayın. – Chechulin

İlgili konular