如此处所述 Prevent Java from loading library more than once 一个库只能加载一次。
现在我的问题是,我想要多次加载同一个libray。 (System.load命令与loadlibrary命令的作用相同)。
知道我可以使用哪个命令,或者我怎么做?
最诚挚的问候, 斯蒂芬
答案 0 :(得分:3)
我很确定这不是Java限制,而是大多数操作系统的设计。根据我的经验,Windows / Linux / Solaris不允许多次加载同一个库。您可能需要修改不想修改的C ++。如果您无法控制该代码,则可能需要处理另一个解决方案,该解决方案涉及为要加载并通过管道/套接字进行通信的DLL的每个副本执行/生成新进程。
答案 1 :(得分:1)
感谢basszero的答案,如果我想加载相同的dll多次,我真的必须开始新的进程。我现在要做的就是
执行此操作的技术是ProcessBuilder。这是一个小编码示例:
ProcessBuilder pb = new ProcessBuilder( "java", "Mainclass");
String filepath = "C:\\{..}\\bin\\";
File directory = new File(filepath);
pb.directory(directory);
try {
Process p = pb.start();
p.waitFor();
InputStream is = p.getInputStream();
int c;
while((c = is.read()) != -1){
sb.append((char)c);
}
} catch (Exception e) {
e.printStackTrace();
}
这当然是分配工作,因为我不得不在进程之间交换对象,同步它们等......: - (
如果有人看到这个例子,我会建议他,他编辑了他的C ++,这在我的案例中是不可能的。
此致 斯蒂芬