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)
如果您想了解更多信息,请询问!
答案 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);