问题描述
|
如这里提到的
防止Java多次加载库
一个库只被加载一次。
现在我的问题是,我想多次不止一次地加载相同的libray。 (System.load命令的作用与loadlibrary命令相同)。
知道我可以使用哪个命令,或者我怎么做?
最好的祝福,
斯特凡
解决方法
我很确定这不是Java限制,而是大多数操作系统的设计。以我的经验,Windows / Linux / Solaris不允许多次加载同一库。您可能需要修改您不想修改的C ++。如果您无法控制该代码,则可能必须使用其他解决方案,其中涉及为要加载的DLL的每个副本执行/生成新进程并通过管道/套接字进行通信。
,感谢basszero的回答,如果我想加载相同的dll muliple时间,我真的必须启动新进程。我现在要做的是
一个跨越新流程的主要课程
一类加载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 ++,在我看来,这是不可能的。
问候,
斯特凡