Java JNI y bibliotecas dependientes en Windows

Larga historia corta: tengo un tarro ejecutable, que llamajni.dll que depende delib.dll. Y me estoy poniendo tan temidoUnsatisfiedLinkError.

Esta La respuesta llega bastante cerca, pero no logra resolver el problema, según mi experiencia. Incluso cuando la carpeta donde residen los DLL está especificada enjava.library.path, no funcionará. Tengo que cambiar las ventanasPATH variable de entorno también. De hecho, el defectojava.library.path en Windows parece serPATH.

¿Hay alguna manera "bonita" de arreglar esto? Quiero crear un instalador para Windows y me pregunto cómo resolvería este problema, de modo que el usuario final no tenga que hacer ningún trabajo manual.

EDITAR:

Lo que implementé es lo siguiente: la aplicación se envía con una carpeta llamada "native_libs" que tiene bibliotecas dinámicas para todas las arquitecturas compatibles. La estructura es la siguiente:

/
+- native_libs/
   +- windows/
   |  +- x86/
   |  |  +- ...
   |  +- x64/
   |     +- ...
   |
   +- linux/
   |  +- x86/
   |  |  +- ...
   |  +- x64/
   |     +- ...
   |
   +- libs/
      +- ...

En tiempo de ejecución, mientras la aplicación se inicializa, se detectan la arquitectura JRE correcta y el sistema operativo del sistema y se copian los archivos de biblioteca adecuados en la carpeta libs /. losjava.library.path se está configurando en tiempo de ejecución, así como un hack común. Finalmente, elPATH La variable de entorno para Windows se establece utilizando un lanzador nativo.

¿Algún margen de mejora? Tal vez copiando los archivos DLL en el mismo directorio que eljar archivo negaría la necesidad de configurar eljava.library.path yPATH variables? Necesito investigar cargando los dll's conSystem.load() También, lo que anulará la necesidad de copiar archivos.

Respuestas a la pregunta(4)

Su respuesta a la pregunta