java c++ environment-variables jacob

java - ¿Qué es LD_LIBRARY_PATH y cómo usarlo?



c++ environment-variables (6)

Bueno, el mensaje de error le dice qué hacer: agregue la ruta donde reside Jacob.dll a java.library.path. Puedes hacerlo en la línea de comandos de esta manera:

java -Djava.library.path="dlls" ...

(Suponiendo que Jacob.dll está en la carpeta "dlls")

También vea java.lang.UnsatisfiedLinkError no *****. Dll en java.library.path

Participo en el desarrollo de un proyecto Java, que utiliza algunos componentes de C ++, por lo que necesito Jacob.dll. (en Windows 7)

Sigo recibiendo java.lang.UnsatisfiedLinkError: no JacobDB in java.library.path no importa dónde coloque Jacob.dll ....

Busqué posibles decisiones y la que no he probado hasta ahora es establecer la variable LD_LIBRARY_PATH, apuntando al archivo .dll.

Tengo poca experiencia y no estoy familiarizado con lo que debería ser el significado y el uso de esa variable. ¿Puedes ayudarme?


LD_LIBRARY_PATH es específico de Linux y es una variable de entorno que apunta a directorios donde el cargador dinámico debe buscar bibliotecas compartidas.

Intente agregar el directorio donde está su .dll en la variable PATH. Windows buscará automáticamente en la lista de directorios en esta variable de entorno. LD_LIBRARY_PATH probablemente no resolverá el problema (a menos que la JVM lo use, no lo sé).


Mi error también estaba relacionado con no encontrar el archivo .so requerido por un servicio. LD_LIBRARY_PATH variable LD_LIBRARY_PATH para priorizar la ruta elegida por el enlazador para buscar la biblioteca requerida.

Copié tanto el archivo de servicio como el .so en una carpeta y lo introduje en la variable LD_LIBRARY_PATH como

LD_LIBRARY_PATH=. ./service

Estando en la misma carpeta he dado el comando anterior y funcionó.


Por lo general, debe establecer java.library.path en la línea de comandos de la JVM:

java -Djava.library.path=/path/to/my/dll -cp /my/classpath/goes/here MainClass


LD_LIBRARY_PATH es la ruta de biblioteca predeterminada a la que se accede para verificar las bibliotecas dinámicas y compartidas disponibles. Es específico para las distribuciones de linux.

Es similar a la variable de entorno PATH en Windows que el vinculador comprueba posibles implementaciones durante el tiempo de vinculación.


LD_LIBRARY_PATH es la variable de entorno predefinida en Linux / Unix que establece la ruta que debe seguir el vinculador al vincular bibliotecas dinámicas / bibliotecas compartidas.

LD_LIBRARY_PATH contiene una lista de rutas separadas por dos puntos y el vinculador da prioridad a estas rutas sobre las rutas de biblioteca estándar /lib y /usr/lib . Se seguirán buscando las rutas estándar, pero solo después de que se haya agotado la lista de rutas en LD_LIBRARY_PATH .

La mejor manera de usar LD_LIBRARY_PATH es configurarlo en la línea de comandos o en el script inmediatamente antes de ejecutar el programa. De esta manera, el nuevo LD_LIBRARY_PATH aislado del resto de su sistema.

Ejemplo de uso:

$ export LD_LIBRARY_PATH="/list/of/library/paths:/another/path" $ ./program

Dado que habla de .dll se encuentra en un sistema de Windows y se debe colocar un .dll en una ruta que el vinculador busca en el momento del enlace. En Windows, esta ruta se establece mediante la variable de entorno PATH . Por lo tanto, agregue .dll a PATH y debería funcionar bien