2013-08-26 13 views
5

Sto riscontrando problemi con LibGDX sul desktop. Continuo a ricevere il seguente errore quando si tenta di avviare l'applicazione:UnsatisfiedLinkError Libgdx Desktop

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) 

ho le seguenti librerie aggiunto al mio progetto:

  • gdx.jar
  • GDX-sources.jar
  • GDX-natives.jar
  • GDX-backend-lwjgl.jar
  • GDX-backend-lwjgl-natives.jar

Mi manca qualcosa?

Ho cercato in alto e in basso, ma tutto quello che trovo è per Android e mi dice di aggiungere le librerie .so dalle cartelle arm al mio progetto, ma non ha senso per me un progetto desktop su wintel piattaforma.

+1

Non deve trovarsi nel * percorso di classe * deve trovarsi nel * percorso della libreria *, il che significa che devi definire la proprietà di sistema java.library.path impostando il suo valore sul percorso della directory dove i file così risiedono. Dalla riga di comando o programmaticamente, ma deve essere prima che il codice provi a eseguire o [UnsatisfiedLinkError viene generato] (http://docs.oracle.com/javase/7/docs/api/java/lang/UnsatisfiedLinkError.html). A giudicare da cosa [libgdx è] (https://code.google.com/p/libgdx/) ti suggerisco di provare la soluzione dalla risposta di @ nessuno. – linski

risposta

15

Consiglierei di impostare i progetti con this GUI. Dovrebbe fornire una configurazione valida per tutte le piattaforme. È inoltre possibile utilizzare le ultime build notturne e verificare se il problema si verifica ancora. Il problema potrebbe essere che le librerie native non corrispondono agli altri jar.

Un altro problema potrebbe essere l'istanziazione di uno SpriteBatch (o qualcos'altro che utilizza internamente uno SpriteBatch) troppo presto (sembrava un po 'come questo nello stacktrace). Per esempio staticamente in questo modo:

private static SpriteBatch batch = new SpriteBatch(); 

questo non funziona, dal momento che libgdx non era impostato correttamente a questo punto nel tempo. Invece, crea queste cose nei metodi create/show del tuo gioco.

+8

Sono abbastanza sicuro che sia la seconda risposta (il costruttore di SpriteBatch viene chiamato prima che Libgdx sia inizializzato). –

+0

Quest'ultimo era il caso. Grazie! – jonbonazza

+0

Ho commesso questo errore impostando una schermata nel costruttore del mio oggetto di gioco, invece del metodo #create del mio oggetto di gioco. La seconda risposta ha un senso per ciò. – Moz

Problemi correlati