Un jar de terceros que uso intenta cargar una biblioteca nativa usando System.loadLibrary. Creo que lo que está sucediendo es que una de las bibliotecas cargadas tiene una dependencia en otra biblioteca nativa. Señalar -Djava.library.path no funciona correctamente en este caso. Las instrucciones del sitio de la aplicación colocan los dlls en el directorio jre/bin, pero creo que esta es una idea realmente mala (especialmente cuando se trata de implementar en sitios de clientes).Dependencias Java System.loadLibrary
Por lo tanto, esta pregunta es realmente 2 partes.
¿Tiene sentido que si un lib intentos nativos para cargar otro lib nativo que Djava.library.path no funciona?
¿Existe una buena solución para solucionar este problema? Supongo que podría llamar explícitamente a System.loadLibrary en todos los dlls (ni siquiera estoy seguro de si esto funcionaría), pero tendría que asegurarme de llamarlos en el orden correcto, de lo contrario tendré el mismo problema.
EDIT: Creo que esto tiene sentido que está sucediendo, y la mejor solución que he leído hasta ahora es utilizar Dependency Walker para averiguarlo y luego cargarlos en orden inverso ... pero 'm abierto a mejores sugerencias ...
gracias, Jeff
Intenté cargar en orden inverso, y funciona, así que tal vez use ese enfoque, a menos que me falte alguna solución mágica. –
Eso es probablemente lo que yo haría también, además de tal vez presentar un defecto a un tercero. Si está haciendo un software multiplataforma, las bibliotecas vinculadas dinámicamente pueden diferir entre plataformas. ¡Buena suerte! –