5

我有一个应用程序,它使用了 3 个不同的 JAR 库……让我们称它们为 a.jar、b.jar 和 c.jar。这些 JARS 中的每一个都有一个伴随的本机 C++ 共享对象。

现在,a.jar 和 b.jar 都导入并使用 c.jar。

所以,我的问题是 - 使用 system.loadLibrary 加载本机库时最好的方法是什么?我可以从我的应用程序代码中全部加载它们还是必须由各自的 JAR 加载它们?如果我从各自的 JAR 文件加载它们,会在单独的线程中加载吗?

4

1 回答 1

2

加载本机库是类的责任。

假设每个 jar 文件也有名为 A、B 和 C 的类。所有这些类最有可能通过静态方式加载它们的本地伙伴。

class A { 
    static { 
        System.loadLibrary(“A”); 
    }

    C c;
} 

class C { 
     static { 
         System.loadLibrary(“C”); 
     }
} 

在这种结构中,当您访问类 A 时,将由类加载器加载和初始化类 C。

于 2012-11-27T08:31:15.400 回答