【问题标题】:Giving custom path for native dll in Netbeans在 Netbeans 中为本地 dll 提供自定义路径
【发布时间】:2018-05-22 19:06:27
【问题描述】:

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

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

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

【问题讨论】:

    标签: java netbeans


    【解决方案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);
        }
    

    【讨论】:

      猜你喜欢
      • 2012-01-16
      • 2012-05-29
      • 1970-01-01
      • 1970-01-01
      • 2011-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-21
      相关资源
      最近更新 更多