2011-07-05 22 views
7

Sto realizzando un gioco di base in Java utilizzando la libreria LWJGL tramite Netbeans.Quando eseguo il .jar, ottengo un errore "No lwjgl in java.library.path"

Ho creato una libreria con lwjgl, lwjgl_util e jinput .jar e ho aggiunto -Djava.library.path = C: \ LWJGL \ native \ windows alla categoria "Esegui" nelle proprietà del progetto.

Quando eseguo il file in Netbeans, funziona perfettamente senza problemi. Ma quando eseguo il .jar facendo doppio clic sul file, non compare nulla (nemmeno la finestra di errore CMD momentanea, per quanto posso dire). E quando ho eseguito il file tramite linea di comando, ottengo:

C:\Users\200160765>java -jar "C:\Users\200160765\Documents\NetBeansProjects\Game 
\dist\Game.jar" 
Exception in thread "main" java.lang.UnsatisfiedLinkError: no lwjgl in java.libr 
ary.path 
     at java.lang.ClassLoader.loadLibrary(Unknown Source) 
     at java.lang.Runtime.loadLibrary0(Unknown Source) 
     at java.lang.System.loadLibrary(Unknown Source) 
     at org.lwjgl.Sys$1.run(Sys.java:73) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at org.lwjgl.Sys.doLoadLibrary(Sys.java:66) 
     at org.lwjgl.Sys.loadLibrary(Sys.java:82) 
     at org.lwjgl.Sys.<clinit>(Sys.java:99) 
     at org.lwjgl.opengl.Display.<clinit>(Display.java:130) 
     at game.Draw.createWindow(Draw.java:198) 
     at game.Draw.init(Draw.java:214) 
     at game.Draw.run(Draw.java:56) 
     at game.Main.main(Main.java:9) 

Ho provato a spostare il file di libreria .jar intorno alla cartella 'lib' nella stessa directory come Game.jar di DLL e, e in movimento li nella stessa directory di Game.jar, ma ottengo lo stesso errore. Qualcuno potrebbe aiutarmi a capire perché non riesco a farlo funzionare al di fuori di netbeans?

risposta

9

è necessario puntare il jvm a dove si trovano i file nativi utilizzando un parametro della riga di comando -Djava.library.path = "percorso/a/nativi". È possibile utilizzare un file batch (.bat) per specificare ciò e avviare l'applicazione per conto dell'utente.

In alternativa è possibile utilizzare uno strumento come JarSplice per creare un singolo file jar eseguibile da tutti i vasi e allo stesso tempo includere i file nativi al suo interno. Automatizza la parte difficile di specificare manualmente i nativi e offre un'esperienza utente migliore.

Per utilizzare JarSplice, seleziona il tuo game.jar, lwjgl.jar, lwjgl_util.jar e jinput.jar nella scheda jars. Quindi tutti i file * .dll, * .so, * .dylib e * .jnilib nella scheda nativa. Aggiungi la tua classe principale nella scheda della classe e crea il singolo jar eseguibile.

+1

Non ho molta familiarità con la sintassi del file .bat, ma ho provato questa strada: '@echo off java -jar Game.jar -Djava.library.path = C: \ LWJGL \ native \ windows' E ho ancora il stesso errore. –

+0

Inoltre, la cosa di Fat Jar funziona, ma le trame sui blocchi che sto attualmente rendering non vengono caricate ... tuttavia, questo potrebbe essere il risultato dell'imballaggio in un .jar e non dell'imballaggio in un vaso di grasso. –

+0

yeh assicurati di non caricare trame usando un File o FileInputStream poiché non è possibile utilizzarle per caricare trame all'interno di un barattolo. – Gavin

3

LWJGL necessita dei componenti nativi per la propria piattaforma specifica in java.library.path. Si trovano nella sottodirectory native nella distribuzione LWJGL e terminano con .so su Linux, OSX e Solaris e .dll per Windows.

+0

So che ha bisogno della DLL, ma quello che non so è come Netbeans trova bene la DLL, ma il .jar non lo fa e come dico al .jar. –

0

ho avuto questo problema e fissato utilizzando jarSplice (http://ninjacave.com/jarsplice)

assicuratevi di eliminare tutti i nativi prepiazzati nel vostro vaso prima di creare il vaso di grasso, altrimenti si creare un errore duplicato

2

Quando ho avuto questo problema, è perché ho accidentalmente messo l'argomento per specificare la posizione dei nativi (-Djava.library.path =/native /) nel campo chiamato 'Argomenti' sotto il eseguire la categoria del pannello delle opzioni, invece di "Opzioni vm". Come visto qui: http://s30.postimg.org/6f90akidt/Capture.png

0

Ho anche ricevuto lo stesso errore e mi sono reso conto che ho chiamato il file "my_lib.zip" anziché "my_lib.jar". Forse potrebbe aiutare qualcuno.

Problemi correlati