Native Library已经加载到另一个类加载器中

Ris*_*esh 6 java applet classloader

我需要一些帮助来处理以下场景.

我使用两个小程序,需要相同的本机库(.dll)文件.

因此,当我从网页运行applet时,第一次applet将dll加载到applet类加载器中.它工作正常.但是当第二个applet尝试加载相同的dll时,它给了我一个例外"Error loading win32com: java.lang.UnsatisfiedLinkError: Native Library C:\WINDOWS\system32\win32com.dll already loaded in another classloader"

我使用以下方法加载驱动程序.

CommDriver driver = (CommDriver)Class.forName("com.sun.comm.Win32Driver").newInstance();
driver.initialize();
Run Code Online (Sandbox Code Playgroud)

请给我解决方案

谢谢&Rgds,瑞诗凯诗

小智 0

简而言之,使用本机库的类的同一 实例必须由两个类共享。

您可以通过获取系统类加载器(或当前类的类加载器的顶级父级)来完成此操作,然后动态地让它加载使用本机库的类。

如果您不知道哪个类加载本机库,那么您可以创建一个代理类并加载它。该类必须为您调用其他库,以便它们将使用代理类类加载器加载(因此也可以共享)。

不过,我希望安全管理器能够阻止您在 Applet 中执行此操作。