Cuando ejecuto el .jar, aparece el mensaje “No lwjgl in java.library.path”

Estoy haciendo un juego básico en Java usando la Biblioteca LWJGL a través de Netbeans.

Creé una biblioteca con los archivos 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 la línea de comando, obtengo:

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.(Sys.java:99) at org.lwjgl.opengl.Display.(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) 

Intenté mover los archivos de la biblioteca DLL y .jar a la carpeta ‘lib’ en el mismo directorio que Game.jar y moverlos al mismo directorio que Game.jar, pero me da el mismo error. ¿Podría alguien ayudarme por qué no puedo hacer que funcione fuera de Netbeans?

debe apuntar el jvm al lugar donde se encuentran los archivos nativos usando un parámetro de línea de comando -Djava.library.path = “path / to / natives”. Puede usar un archivo por lotes (.bat) para especificar esto e iniciar su aplicación por usted.

Alternativamente, 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.

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

Cuando tuve este problema, fue porque accidentalmente puse el argumento para especificar la ubicación de los nativos (-Djava.library.path = / native /) en el campo llamado ‘Argumentos’ en la categoría de ejecución del panel de opciones, en su lugar de ‘Opciones de vm’. Como se ve aquí: http://sofes.miximages.com/java/Capture.png

Y otra forma más de hacerlo es con Java Web Start (jnlp): http://lwjgl.org/forum/index.php?topic=3763.0

Esto hace que compartir tu proyecto sea más fácil de alguna manera.

Tuve este problema y lo solucioné usando jarSplice (http://ninjacave.com/jarsplice)

asegúrese de eliminar todos los nativos preinstalados en su jar antes de crear el flask gordo, de lo contrario creará un error duplicado

También recibí el mismo error y luego me di cuenta de que nombré el archivo “my_lib.zip” en lugar de “my_lib.jar”. Tal vez pueda ayudar a alguien.

Otra cosa para verificar:

  • Si está utilizando una JVM de 32 bits, necesita bibliotecas de 32 bits. (Incluso en un sistema operativo de 64 bits)
  • Si está utilizando una JVM de 64 bits, necesita bibliotecas de 64 bits.