JNI加载库不只一次

问题描述

| 如这里提到的 防止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 ++,在我看来,这是不可能的。 问候, 斯特凡     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...