小编典典

提供NetBeans中本机dll的自定义路径

java

我有一个NetBeans平台应用程序,其中有2个模块具有 相同的本机库的不同版本。

我在每个模块下的release / module / lib文件夹中添加了本机库。 [根据
http://wiki.netbeans.org/DevFaqWrapperModules部分:如何

在我的库包装模块中 包含本机库( .so或 .dll)?]

但是问题是在应用程序的最终生成过程中,本机库被复制到build \ cluster \ modules \
lib文件夹。即,lib文件夹中仅存在我的本机库的一个版本,因为两个版本具有相同的名称。现在我的问题是,我可以在Netbeans中特别提及jar(版本1)应采用本机lib(版本1),而jar(版本2)应引用本机lib(版本2)。


阅读 224

收藏
2020-11-30

共1个答案

小编典典

您可以通过两种方式加载本机库文件(.dll / Windows或.so / Linux):

1)通过提供完整路径来加载文件:

System.load("my/full/path/native.dll");

2)如果您的本机文件位于Java库路径内:

System.loadLibrary("native");

请注意,在第二种情况下,您只需要提供本机文件的名称(不带扩展名)。

默认的Java库路径取决于操作系统:

在Windows上,它映射到PATH
在Linux上,它映射到LD_LIBRARY_PATH
在OS X上,它映射到DYLD_LIBRARY_PATH

如果要设置自己的Java库路径:

try {
        System.setProperty("java.library.path","YOUR/PATH");
        Field fieldSysPath = ClassLoader.class.getDeclaredField("sys_paths");
        fieldSysPath.setAccessible(true);
        fieldSysPath.set(null, null);
    } catch (Exception ex) {
        System.out.println("Failed to set Java Library Path: " + ex.getMessage);
    }
2020-11-30