He estado integrando módulos Java sencillos en el entorno MATLAB en Windows con cierto éxito. Recientemente me encontré con un problema con una biblioteca de terceros que intenta cargar un dll.UnsatisfiedLinkError al cargar una biblioteca desde Java en MATLAB
El cargador de clases Java lanza el UnsatisfiedLinkError cuando se intenta realizar la carga:
java.lang.UnsatisfiedLinkError: no <libname> in java.library.path
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
La excepción está informando de que mi 'libname' no se encuentra en la propiedad java.library.path. He verificado que la propiedad sí tiene la ruta correcta y que el archivo libname.dll existe en esa ruta.
He verificado java.library.path de dos maneras. En primer lugar, simplemente comprobado que el valor devuelto en la línea de comandos de MATLAB:
>> java.lang.System.getProperty('java.library.path')
Entonces, he modificado el método de Java que se trate de imprimir ese valor justo antes de la llamada a la función de tercera parte que no:
System.out.println(System.getProperty('java.library.path'));
Ambos confirmaron que mi valor de ruta se configuró como se esperaba.
También intenté cargar la biblioteca manualmente desde la línea de comandos y falla con los mismos resultados.
¿Esto es algo que no es posible en MATLAB, o me falta algo aquí? Desafortunadamente no soy administrador en esta máquina, así que no puedo probar el viejo truco de mover el dll a un directorio con dlls que sí funcionan.
Acepto cualquier sugerencia para probar si no hay una respuesta absoluta.
Plataforma: Windows XP MATLAB R2009a Java 1.6
¿Cómo estás verificando el valor de la propiedad java.library.path? –
@matt b: Agregué detalles a la publicación en respuesta a su pregunta. –
¿Puedes ver qué biblioteca está intentando cargar el código de terceros (mirando la fuente)? ¿Es la misma biblioteca que se informa en UnsatisfiedLinkError? – bm212