sierra para mac high descargar actualizar java macos jni jogl

java - para - ¿Cargando JNI lib en Mac OS X?



java para mac high sierra (3)

No tiene que proporcionar java.library.path al inicio. Puedes establecerlo programáticamente con

System.setProperty("java.library.path", "/var/folder/bla/foo/bar/");

No sé si System.load() funcionará de alguna manera sin esta ruta de biblioteca.

Fondo

Así que estoy intentando cargar un jnilib (específicamente JOGL ) en Java en Mac OS X en tiempo de ejecución. He estado siguiendo las preguntas relevantes sobre desbordamiento de pila:

El objetivo final para mí es empaquetar archivos JOGL específicos de la plataforma en un JAR y descomprimirlos en un directorio temporal y cargarlos en el inicio. Volví a resolver mi problema simplemente intentando cargar JOGL usando rutas codificadas:

File f = new File("/var/folders/+n/+nfb8NHsHiSpEh6AHMCyvE+++TI/-Tmp-/libjogl.jnilib"); System.load(f.toString()); f = new File ("/var/folders/+n/+nfb8NHsHiSpEh6AHMCyvE+++TI/-Tmp-/libjogl_awt.jnilib"); System.load(f.toString());

Obtengo la siguiente excepción cuando intento usar la API de JOGL:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no jogl in java.library.path

Pero cuando especifico java.library.path añadiendo la siguiente opción de JVM:

-Djava.library.path="/var/folders/+n/+nfb8NHsHiSpEh6AHMCyvE+++TI/-Tmp-/"

Todo funciona bien

Pregunta

¿Es posible usar System.load (u otra variante) en Mac OS X como reemplazo de -Djava.library.path que se invoca en el tiempo de ejecución?


Jogl siempre intenta cargar automáticamente todas las bibliotecas dependientes. Para evitar esto, debe haber una clase NativeLibLoader donde puede llamar a disableLoading () antes de cargar las librerías a través de System.load ()


System.load(...) toma libraryName como argumento. No toma el camino a la biblioteca como argumento. JVM busca una biblioteca con el nombre especificado en la lista de rutas especificadas en -Djava.library.path;

Aquí no hay nada específico para Mac OS X. Busca las bibliotecas de la misma manera en todos los sistemas operativos.