variable - Cómo agregar un archivo.so a java.library.path en Linux
variables de entorno windows 10 (4)
Agregue el directorio contenedor a LD_LIBRARY_PATH
antes de iniciar la aplicación
export LD_LIBRARY_PATH = $LD_LIBRARY_PATH:/some/pathOfContainingDirectory
Use java -XshowSettings:properties
para mostrar el valor java.library.path (y otros).
Estoy trabajando con una aplicación Java que necesita un archivo .dll
en java.library.path en Windows. Para ejecutar la misma aplicación en Linux tengo el archivo .so
respectivo que se debe agregar a java.library.path
en la máquina Linux, no encontré ninguna solución fácil para esto hasta el momento
Puse el .so
en una carpeta que ya está en la ruta de la clase, pero mi aplicación todavía se queja de que no se requiere el archivo java.library.path
en java.library.path
Me gustaría encontrar:
- Formas de agregar
java.library.path
ajava.library.path
- Cómo saber si ya está agregado (cuando se agrega)
Tuve muchos problemas para resolver esto, asegúrese de tener el prefijo lib
en el nombre de la biblioteca.
Entonces pasos,
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/some/pathOfContainingDirectory"
Cambie el nombre de las bibliotecas para tener lib como prefijo. [Agregar esto como parte del script de compilación]
mv JNIDemo.so libJNIDemo.so
Consulte esta respuesta para obtener una explicación detallada https://.com/a/3987567/2076566
Utilicé el método java -XshowSettings: properties y encontré la ruta de una carpeta previamente configurada y copié mi archivo so a esa carpeta
File file = null;
private String[] libs_path = System.getProperty("java.library.path").split(":");
public boolean isInstalled() {
boolean isInstalled = false;
for(String lib : libs_path) {
file = new File(lib+"/"+"yourlib.so");
if(file.exists()) {
isInstalled = true;
break;
}
}
return isInstalled;
}
public void install() {
if(!isInstalled) {
for(String lib: lib_path) {
// copy your .so to lib
break;
}
}
}