Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 本机库已加载到另一个类加载器中_Java_Applet_Classloader - Fatal编程技术网

Java 本机库已加载到另一个类加载器中

Java 本机库已加载到另一个类加载器中,java,applet,classloader,Java,Applet,Classloader,我需要一些帮助来处理以下场景 我使用的两个小程序需要相同的本机库(.dll)文件 因此,当我从网页运行小程序时,第一个小程序第一次将dll加载到小程序类加载器中。它很好用。 但是,当第二个小程序尝试加载同一个dll时,它会出现异常,说明“加载win32com:java.lang.unsatifiedLinkError:Native Library C:\WINDOWS\system32\win32com.dll时出错” 我使用以下方法加载驱动程序 CommDriver driver = (Com

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

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

因此,当我从网页运行小程序时,第一个小程序第一次将dll加载到小程序类加载器中。它很好用。 但是,当第二个小程序尝试加载同一个dll时,它会出现异常,说明
“加载win32com:java.lang.unsatifiedLinkError:Native Library C:\WINDOWS\system32\win32com.dll时出错”

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

CommDriver driver = (CommDriver)Class.forName("com.sun.comm.Win32Driver").newInstance();
driver.initialize();
请给我答案

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

您可以通过获取系统类加载器(或当前类的类加载器的顶级父级),然后动态地让它加载使用本机库的类来实现这一点

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


但是,我希望安全管理器阻止您在小程序中执行此操作。

在不同的位置加载本机库(事实上,任何库)两次是没有意义的。 您可以将Applet1的*驱动程序*对象设置为静态

并在Applet2中使用它,谢谢您的快速帮助;但是我在javax.comm.CommPortIdentifier.getPortIdentifier(CommPortIdentifier.java:105)上得到了如下的execption:javax.comm.NoSuchPortException,因此我使用CommDriver=(CommDriver)Class.forName(“com.sun.comm.Win32Driver”).newInstance()加载驱动程序;driver.initialize();有没有我可以引用共享库内容的代码示例?这里和那里都给出了解决方案