为Netbeans中的本机DLL提供自定义路径



我有一个NetBeans平台应用程序,带有2个模块,具有的不同版本的同一本地库。

我在每个模块下方添加了本机库/模块/LIB文件夹。 [根据http://wiki.netbeans.org/devfaqwrappermodules:我如何在我的库包装模块中包含本机库( .so或 .dll)?]

但问题是在应用程序的最终构建生成期间,将本机库被复制以构建 cluster 模块 lib文件夹。即,我的本地库的一个版本仅存在于Lib文件夹中,因为两个版本都具有相同的名称。现在我的问题是,我可以在Netbeans中特别提及JAR(版本1)应采用本机LIB(VER1)和JAR(版本2)应参考本机Lib(版本2)。

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

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

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

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

System.loadLibrary("native");

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

默认Java库路径取决于OS:

在Windows上,它映射到路径
在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);
    }

最新更新