我有一个与一组第三方库进行交互的JNI库,并且系统上可能有多个版本的第三方库。对于第三方库的每个版本,为了可比性的原因,我必须重新编译JNI代码。现在我通过加载一个具有特定名称的DLL来处理这个问题,并且如果版本发生更改,我会更改JNI接口DLL的名称,以便版本的正确名称具有正确的名称以便加载。是否可以在Java中加载同一个DLL的不同版本?
我希望能够根据用户想要使用的版本动态加载dll。如果我在具有不同名称但方法签名相同的DLL上调用System.loadLibrary两次,会发生什么情况?
System.loadLibrary("JNIv1");
// Same code compiled against a different third party version
System.loadLibrary("JNIv2");
我只需要一次使用其中一个版本,所以如果旧版本不再可访问,那很好。
是否有可能使用相同的方法签名加载两个不同版本的DLL,而无需重新启动程序?