Tengo una biblioteca JNI que interactúa con un conjunto de bibliotecas de terceros, y puede haber más de una versión de la biblioteca de terceros en el sistema. Para cada versión de la biblioteca de terceros, tengo que volver a compilar el código JNI por razones de comparabilidad. En este momento me ocupo de esto al cargar un archivo DLL con un nombre específico, y si la versión cambia, cambio los nombres de las DLL de la interfaz JNI para que el correcto para la versión tenga el nombre correcto para cargarlo.¿Es posible cargar diferentes versiones de la misma DLL en Java?
Me gustaría poder cargar dinámicamente el archivo dll, según la versión que el usuario quiera usar. ¿Qué sucede si llamo a System.loadLibrary dos veces en DLL con diferentes nombres pero con las mismas firmas de método?
System.loadLibrary("JNIv1");
// Same code compiled against a different third party version
System.loadLibrary("JNIv2");
que sólo tendrá que utilizar una de las versiones a la vez, por lo que está bien si la versión antigua ya no es accesible.
¿Es posible cargar dos versiones diferentes de una DLL con las mismas firmas de método sin reiniciar el programa?