2016-11-17 91 views
0

好吧,首先,我是Java新手,但不是編程。 對於一個人際項目,我決定使用Slick2D,這是一個用java編寫的圖形庫,我遇到了一個我現在還無法解決的問題。無法找到正確的JVM選項

考慮以下幾點:

  • 我使用NetBeans
  • 我目前在Linux上

據我瞭解,slick2d使用lwgjl。我按照下面的指示: Setting up Slick2D for netbeans

我的問題我認爲是給我的JVM正確的選項。 目前我設置的是:

-Djava.library.path = /家庭/卡雷爾/Téléchargements/柔滑/本地/ UNIX

這裏是電流誤差輸出我得到:

run: 
Exception in thread "main" java.lang.UnsatisfiedLinkError: no lwjgl64  in java.library.path 
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867) 
at java.lang.Runtime.loadLibrary0(Runtime.java:870) 
at java.lang.System.loadLibrary(System.java:1122) 
at org.lwjgl.Sys$1.run(Sys.java:72) 
at java.security.AccessController.doPrivileged(Native Method) 
at org.lwjgl.Sys.doLoadLibrary(Sys.java:66) 
at org.lwjgl.Sys.loadLibrary(Sys.java:87) 
at org.lwjgl.Sys.<clinit>(Sys.java:117) 
at org.lwjgl.opengl.Display.<clinit>(Display.java:135) 
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 jcoinche.client.JcoincheClient.main(JcoincheClient.java:29) 
/home/karel/.cache/netbeans/8.1/executor-snippets/run.xml:53: Java returned: 1 
BUILD FAILED (total time: 0 seconds) 

我的代碼如下(當然,需要一個庫,並且不工作的一部分 - 它是所有輔導材料,順便說一句沒有我自己。):

package jcoinche.client; 

import java.io.DataOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.net.Socket; 
import java.net.UnknownHostException; 
import java.io.InputStreamReader; 
import java.io.BufferedReader; 
import java.util.Scanner; 
import static jcoinche.client.Game.gamename; 
import static jcoinche.client.Game.xSize; 
import static jcoinche.client.Game.ySize; 
import org.newdawn.slick.AppGameContainer; 
import org.newdawn.slick.SlickException; 

public class JcoincheClient 
{ 
public static void main(String[] args) 
{ 
    Socket socket; 

    AppGameContainer appgc; 
    try 
    { 
     appgc = new AppGameContainer(new Game(gamename)); 
     appgc.setDisplayMode(xSize, ySize, false); 
     appgc.setTargetFrameRate(60); 
     appgc.start(); 
    } 
catch(SlickException e) 
{ 
    e.printStackTrace(); 
} 
} 

Game.java:

package jcoinche.client; 

import org.newdawn.slick.*; 
import org.newdawn.slick.state.*; 

public class Game extends StateBasedGame 
{ 

    public static final String gamename = "MyGameName"; 
    public static final int play = 0; 
    public static final int xSize = 400; 
    public static final int ySize = 300; 

    public Game(String gamename){ 
     super(gamename); 
     this.addState(new Play()); 
    } 

    public void initStatesList(GameContainer gc) throws SlickException{ 
     this.getState(play).init(gc, this); 
     this.enterState(play); 
    } 

} 

Play.java:

package jcoinche.client; 

import org.newdawn.slick.GameContainer; 
import org.newdawn.slick.Graphics; 
import org.newdawn.slick.SlickException; 
import org.newdawn.slick.state.BasicGameState; 
import org.newdawn.slick.state.StateBasedGame; 

public class Play extends BasicGameState 
{ 
    public Play() 
     { 

    } 

    public void init(GameContainer gc, StateBasedGame sbg) 
     throws SlickException 
     { 

    } 

    public void render(GameContainer gc, StateBasedGame sbg, Graphics g) 
      throws SlickException 
     { 

    } 

    public void update(GameContainer gc, StateBasedGame sbg, int delta) 
      throws SlickException 
     { 

    } 

    public int getID() 
     { 
     return 0; 
    } 
} 

回答

2

錯誤告訴你沒有名爲'lwjgl64'的文件。您購買的UnsatisfiedLinkError,它根據Java文檔,方法是:

Thrown if the Java Virtual Machine cannot find an appropriate native-language definition of a method declared native. 

現在,你單獨使用Slick2D?或者你有LWJGL和Slick2D? Slick2D不是獨立的;你需要LWJGL來運行它。我建議從their site,獲得LWJGL,並將其本地文件夾添加到類路徑中。

從Slick2D文檔,他們這樣寫:

-Djava.library.path=<lwjgl-X.X path>/native/<linux|macosx|solaris|windows> 

Source

+1

當你下載光滑,你實際上有幾個lwgjl.jar文件...但我想我開始明白這個問題。我要做一些測試並回來。 – Tohkai

1

上有堆棧幾個答案可以幫助你解決這個問題,因爲它是從它是由導致錯誤清晰鏈接錯誤LWJGL64。一個崗位有許多解決方案here的提供了一些解決方案,但針對Eclipse IDE的專門的通用解決方案適用於:

引述here @Ben傑克遜

LWJGL needs the native components for your particular platform to be in java.library.path. These are in the subdirectory native in the LWJGL distribution and end in .so on Linux, OSX and Solaris and .dll for windows.

其他潛在的例子解決錯誤: Setting up natives

0

好吧,這是一個有點尷尬,但我明白我的問題是什麼,它是連接我的一個簡單的誤解(關於如何在netbeans上安裝和使用slick2D的說明):

事實上,我的問題是,由於lwgjl.jar和slick2D文件夾中的其他類似文件,我認爲lwgjl在最後,包含在光滑的f中老。

因此,在最後一步中,我給了我的JVM一個指向它的光滑庫文件夾的路徑,而這次是要求lwgjl文件,導致上面顯示的錯誤。

我將路徑更改爲lwgjl/native/linux文件夾,現在所有內容都可以正常工作。 感謝您的回答,他們幫助很大。