Cuando ejecuto el.jar, aparece el mensaje "No lwjgl in java.library.path"
opengl command-line (6)
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.<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)
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?
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.
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.
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 solo 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.
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 frasco gordo, de lo contrario creará un error duplicado
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://s30.postimg.org/6f90akidt/Capture.png
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.