2011-07-05 16 views
7

Estoy haciendo un juego básico en Java utilizando la Biblioteca LWJGL a través de Netbeans.Cuando ejecuto el .jar, obtengo un error "No lwjgl in java.library.path"

Creé una biblioteca con lwjgl, lwjgl_util y jinput .jar, y agregué -Djava.library.path = C: \ LWJGL \ native \ windows a la categoría "Ejecutar" en las propiedades del proyecto.

Cuando ejecuto el archivo en Netbeans, funciona perfectamente sin problemas. Pero cuando ejecuto el archivo .jar haciendo doble clic en el archivo, no aparece nada (ni siquiera la ventana de error de cmd momentánea, hasta donde sé). Y cuando ejecuto el archivo a través de línea de comandos, me sale:

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) 

He intentado mover los archivos de bibliotecas de todo .jar a la carpeta 'lib' en el mismo directorio que Game.jar de DLL y, y moviendo al mismo directorio que Game.jar, pero obtengo el mismo error. ¿Podría alguien ayudarme por qué no puedo hacer que funcione fuera de Netbeans?

Respuesta

9

debe apuntar el jvm a donde se encuentran los archivos nativos utilizando un parámetro de línea de comandos -Djava.library.path = "ruta/a/nativos". Puede usar un archivo por lotes (.bat) para especificar esto e iniciar su aplicación por usted.

Como alternativa, puede utilizar una herramienta como JarSplice para crear un único archivo jar ejecutable de todos sus archivos jar y, al mismo tiempo, incluir sus archivos nativos dentro de él. Automatiza la parte difícil de especificar los nativos de forma manual y proporciona una experiencia de usuario final más agradable.

Para usar JarSplice simplemente seleccione su game.jar, lwjgl.jar, lwjgl_util.jar y jinput.jar en la pestaña jars. Luego, todos los archivos * .dll, * .so, * .dylib y * .jnilib en la pestaña nativos. Agregue su clase principal en la pestaña de clase y cree el único archivo ejecutable.

+1

No estoy tan familiarizado con la sintaxis del archivo .bat, pero probé esa ruta: '@echo off java -jar Game.jar -Djava.library.path = C: \ LWJGL \ native \ windows' Y todavía tengo el mismo error. –

+0

Además, la cosa Fat Jar funciona, pero las texturas en los bloques que actualmente estoy procesando no se cargan ... sin embargo, esto puede ser el resultado del empaque en un .jar y no del empaque en un tarro de grasa. –

+0

solo asegúrate de no cargar ninguna textura con File o FileInputStream, ya que no se pueden utilizar para cargar texturas dentro de un contenedor. – Gavin

3

LWJGL necesita que los componentes nativos para su plataforma en particular estén en java.library.path. Se encuentran en el subdirectorio native en la distribución LWJGL y finalizan en .so en Linux, OSX y Solaris y .dll para Windows.

+0

Sé que necesita las DLL, pero lo que no sé es cómo Netbeans encuentra que la DLL está bien, pero la .jar no, y cómo se lo digo a .jar. –

0

tuve este problema y lo arreglaron usando jarSplice (http://ninjacave.com/jarsplice)

asegúrese de borrar todos los nativos preposicionados en su frasco antes de crear el tarro de grasa, de lo contrario, crear un error duplicado

2

Cuando tuve este problema, fue porque puse accidentalmente el argumento para especificar la ubicación de los nativos (-Djava.library.path =/native /) en el campo llamado 'Argumentos' debajo del ejecutar la categoría del panel de opciones, en lugar de 'Opciones de vm'. como se ve aquí: http://s30.postimg.org/6f90akidt/Capture.png

0

También me dio el mismo error y luego se dieron cuenta de que puse el nombre del archivo "my_lib.zip" en lugar de "my_lib.jar". Tal vez pueda ayudar a alguien.

Cuestiones relacionadas