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 中执行此操作。
| 归档时间: |
|
| 查看次数: |
31775 次 |
| 最近记录: |