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ư:
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
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