2012-11-16 54 views
6

मैं यहां मूलभूत चिकना गेम उदाहरण बना रहा हूं: http://slick.cokeandcode.com/wiki/doku.php?id=01_-_a_basic_slick_game, और मैं कुछ समस्याओं में भाग रहा हूं। विशेष रूप से, खेल ठीक संकलित, लेकिन जब मैं इसे चलाने के लिए प्रयास करते हैं, जावा शिकायत:थ्रेड "अप" में अपवाद java.lang.UnsatisfiedLinkError: java.library.path में कोई lwjgl

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

केवल परिवर्तन मैं मूल करने के लिए बनाया है (जो एक ही त्रुटि की रिपोर्ट करता है), यह था कि मैंने पैकेज घोषणा को हटा दिया है। "डाउनलोड पूर्ण वितरण" लिंक http://slick.cokeandcode.com/, पर क्लिक करके, और यहाँ कैसे मेरे स्लिक फ़ोल्डर लग रहा है की तरह है::

मैं यहाँ से डाउनलोड किया स्लिक enter image description here

मैं इस आदेश के साथ खेल का संकलन कर रहा हूँ:

javac -cp lib/*:. SlickBasicGame.java

और यह एक के साथ इसे चलाने के लिए कोशिश कर रहा है:

java -cp lib/*:. SlickBasicGame

उत्तर

7

कमांडलाइन पर या अपने आईडीई में एक वीएम विकल्प के रूप में -Djava.library.path=path/to/dir जोड़ें ताकि lwjgl मूल फ़ाइलों वाले फ़ोल्डर को ढूंढ सके।

+4

मुझे ध्यान रखना चाहिए कि पथ/to/dir को आपके lwjgl लाइब्रेरी में .dll लाइब्रेरीज़ को इंगित करना चाहिए, जैसे% lwjgl_dir% \ native \ windows। – Chechulin