with library esta dpuareu_jni donde eclipse jython pydev java.library.path

eclipse - esta - no dpuareu_jni in java library path



Agregue.dll a java.library.path en el proyecto Eclipse/PyDev Jython (3)

Estoy tratando de usar una biblioteca compilada .jar de Java en mi proyecto PyDev Jython.

Agregué exitosamente el archivo .jar a PYTHONPATH y pude comenzar a codificar con el trabajo de auto completado.

La biblioteca también requiere una extensión .dll, javaHeclib.dll , por lo que la agregué a la sección de bibliotecas externas de mi proyecto.

Puedo importar la biblioteca bien, pero recibo un error cuando intento acceder a cualquiera de sus funciones:

java.lang.UnsatisfiedLinkError: java.lang.UnsatisfiedLinkError: no javaHeclib in java.library.path

Agregué un argumento de VM a mi configuración de ejecución, sin suerte:

-Djava.library.path="Y:/path/to/javaHeclib.dll;${env_var:PATH}"

Puedo ejecutar la biblioteca desde la línea de comandos con la java.library.path anterior.

Al experimentar en la consola de PyDev, noté que puedo cargar la extensión .dll con una ruta absoluta, pero no relativa:

>>> import java.lang >>> java.lang.System.load(''Y:/path/to/javaHeclib.dll'') >>> java.lang.System.loadLibrary(''javaHeclib'') Traceback (most recent call last): File "<console>", line 1, in ? java.lang.UnsatisfiedLinkError: java.lang.UnsatisfiedLinkError: no javaHeclib in java.library.path

Desafortunadamente, la biblioteca está utilizando la llamada a System.loadLibrary anterior, y no tengo acceso a su fuente.

¿Por qué javaHeclib.dll no está en mi java.library.path ?

EDITAR

La configuración de java.library.path al directorio que contiene la dll no me permitió cargarla usando System.loadLibrary .

-Djava.library.path="Y:/path/to/dll/;${env_var:PATH}"

(El uso de barras diagonales no hizo una diferencia). También intenté cambiar los argumentos de VM predeterminados en eclipse.ini , sin suerte:

-vmargs -Dosgi.requiredJavaVersion=1.5 -Xms40m -Xmx384m -Djava.library.path="Y:/path/to/dll/;${env_var:PATH}"


Creo que la mejor manera es:

  1. Cree una carpeta bajo el proyecto, por ejemplo dll.
  2. Copia / pega todos los archivos dll en esta carpeta.
  3. En proyecto -> Propiedades -> Java Build Path -> Fuente, haga clic y expanda los detalles de la fuente.
  4. Verá la ubicación de la biblioteca nativa, haga clic / resáltela.
  5. Luego haga clic en editar a la derecha, haga clic en el espacio de trabajo nuevamente. Puedes ver la carpeta dll debajo del proyecto.
  6. Selecciónelo y haga clic en OK, OK. Verás que la dll se agrega en la ubicación de la biblioteca nativa.

Eso es. No es necesario cambiar manualmente nada en la configuración.


Tengo este trabajo

Para futura referencia:

Diga que la dll que necesita está en Y:/path/to/dlls/lib/ . Luego, configure el directorio de trabajo de la Configuración de Ejecución en Y:/path/to/dlls/ y configure los argumentos de la VM para que incluyan -Djava.library.path=lib .

Eso es todo, ahora debería funcionar. No sé por qué la especificación de una ruta absoluta en java.library.path no funcionó anteriormente, pero la configuración de un directorio de trabajo parece haberlo hecho.

Tal vez sea algo propio de la biblioteca específica que estoy usando (o que Eclipse se esté ejecutando desde una unidad diferente a la que está en la biblioteca) ...