【问题标题】:java.library.path : sigar-amd64-winnt.dll is setted but not foundjava.library.path : sigar-amd64-winnt.dll 已设置但未找到
【发布时间】:2014-12-03 15:43:50
【问题描述】:

1st,对不起我的英语,我是法国人,但我认为这是解决我问题的最佳网站!

我正在尝试将两个 dll 放入我的 jar 中:sigar-amd64-winnt.dll 和 sigar-x86-winnt.dll

这是一个 Maven 项目,目标是为一个更大的项目制作一个小程序,所以我不能把它放在系统或用户文件夹中。

DLL 位于 jar 的根目录中,因此我可以使用此解决方案提取和加载它们:https://stackoverflow.com/a/4691879/4261971 (它们被提取到 java temp 文件夹中)。 我使用System.setProperty("java.library.path", System.getProperty("java.library.path") + MyLibDirectory) 函数来引用java.library.path 中的dll,它的工作!如果我使用System.getProperty("java.library.path"),我可以看到它。

但错误总是一样的:

no sigar-x86-winnt.dll in java.library.path at org.hyperic.sigar.Sigar.loadLibrary(Sigar.java:172) etc...

调用 sigar 库的函数(简化):

public String getfileVersion(String fileDir) {
    String version = "";
    if ((!fileDir.isEmpty()) && (!"".equals(fileDir))) {
        FileVersion info = Win32.getFileVersion(fileDir);
        version = info.getFileVersion();
    }
    return version;
}

小程序的最终目的是直接从全局 Web 应用程序检查用户计算机并生成日志。

Maven pom.xml 中用于包含 dll 的部分:

<build>
<resources>
  <resource>
    <directory>libs</directory>
    <includes>
      <include>sigar-amd64-winnt.dll</include>
      <include>sigar-x86-winnt.dll</include>          
    </includes>
  </resource>
</resources>

我在这个问题上工作了三个工作日,此时我不明白我的错误,所以如果你能帮助我,我会爱你一辈子! (笑)

如果您想了解更多信息,请询问!

【问题讨论】:

    标签: java maven dll applet


    【解决方案1】:

    System.setProperty("java.library.path", System.getProperty("java.library.path") + System.getProperty("path.separator")+ MyLibDirectory); 或者 System.setProperty("org.hyperic.sigar.path",MyLibDirectory);

    【讨论】:

    • 请让您的答案更详细,而不仅仅是代码。
    • 请考虑格式化代码并详细解释
    猜你喜欢
    • 1970-01-01
    • 2017-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-06
    • 2021-12-25
    • 1970-01-01
    相关资源
    最近更新 更多