2013-08-26 94 views
5

我正在與LibGDX在桌面上的問題。我不斷收到試圖啓動應用程序時出現以下錯誤:UnsatisfiedLinkError Libgdx桌面

Exception in thread "main" java.lang.UnsatisfiedLinkError: com.badlogic.gdx.utils.BufferUtils.newDisposableByteBuffer(I)Ljava/nio/ByteBuffer; 
at com.badlogic.gdx.utils.BufferUtils.newDisposableByteBuffer(Native Method) 
at com.badlogic.gdx.utils.BufferUtils.newUnsafeByteBuffer(BufferUtils.java:288) 
at com.badlogic.gdx.graphics.glutils.VertexArray.<init>(VertexArray.java:62) 
at com.badlogic.gdx.graphics.glutils.VertexArray.<init>(VertexArray.java:53) 
at com.badlogic.gdx.graphics.Mesh.<init>(Mesh.java:148) 
at com.badlogic.gdx.graphics.g2d.SpriteBatch.<init>(SpriteBatch.java:173) 
at com.badlogic.gdx.graphics.g2d.SpriteBatch.<init>(SpriteBatch.java:142) 
at com.badlogic.gdx.graphics.g2d.SpriteBatch.<init>(SpriteBatch.java:121) 
at com.badlogic.gdx.graphics.g2d.SpriteBatch.<init>(SpriteBatch.java:115) 

我有以下庫添加到我的項目:

  • gdx.jar
  • GDX-sources.jar
  • GDX-natives.jar
  • GDX-後端-lwjgl.jar
  • GDX-後端-LWJGL-natives.jar

我錯過了什麼嗎?

我已經搜索了高低,但我發現的一切都是爲了Android,並告訴我將arm文件夾中的.so庫添加到我的項目中,但對於我在wintel上的桌面項目沒有任何意義平臺。

+1

它不必位於*類路徑*它必須位於*庫路徑*中,這意味着您必須通過將其值設置爲目錄的路徑來定義java.library.path系統屬性這樣的文件駐留。無論是從命令行或編程,但那麼它必須是在這之前的代碼試圖執行或[UnsatisfiedLinkError拋出](http://docs.oracle.com/javase/7/docs/api/java/lang/UnsatisfiedLinkError.html )。根據[libgdx是](https://code.google.com/p/libgdx/)來判斷我建議你從@ noone的回答中嘗試解決方案。 – linski

回答

15

我建議你用this GUI來設置你的項目。它應該爲您提供適用於所有平臺的有效設置。您也可以使用最新的每晚構建並檢查問題是否仍然存在。問題可能是本地庫與其他罐子不匹配。

另一個問題可能是你實例化了一個SpriteBatch(或其他內部使用SpriteBatch的東西)太早(在stacktrace中看起來有點像這樣)。例如靜態像這樣:

private static SpriteBatch batch = new SpriteBatch(); 

這是行不通的,因爲libgdx沒有正確設置在這個時間點。相反,請在您的遊戲的create/show方法中創建此類事物。

+8

我很確定它的第二個答案(SpriteBatch構造函數在Libgdx初始化之前被調用)。 –

+0

後者是這種情況。謝謝! – jonbonazza

+0

我在我的遊戲對象的構造函數設置屏幕犯了這個錯誤,而不是我的遊戲對象的方法#創建。第二個答案對此有意義。 – Moz

相關問題