java.library.path:sigar-amd64-winnt.dll已设置但未找到

时间:2014-12-03 15:43:50

标签: java maven dll applet

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

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

这是一个Maven项目,目标是为更大的项目制作applet,因此我无法将其放在系统或用户文件夹中。

DLL位于jar的根目录中,因此我可以使用此解决方案提取并加载它们:https://stackoverflow.com/a/4691879/4261971 (它们在java临时文件夹中提取)。 我使用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;
}

applet的最终目的是直接从全局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>

我在这个问题上工作了三个工作日,我此时并不理解我的错误,所以如果你能帮助我,我会在余生中爱你! (LOL)

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

1 个答案:

答案 0 :(得分:-1)

System.setProperty(&#34; java.library.path&#34;,System.getProperty(&#34; java.library.path&#34;)+ System.getProperty(&#34; path.separator&# 34;)+ MyLibDirectory); 要么  System.setProperty(&#34; org.hyperic.sigar.path&#34;,MyLibDirectory);