(这可能是我正在犯的一个明显的错误,但是现在6个小时后我无法工作。 )sigar-amd64-winnt.dll ...无法引用它或将它与.jar捆绑在一起
我想在我的eclipse项目中使用sigar.jar获取CPU信息(现在只测试sigar API)。
它运行在eclipse没有问题:
- 什么使得它在Eclipse的工作是把DLL在同一文件夹中
- 我测试的sigar.jar添加路径的dll因为构建路径配置对话框中的“本地代码属性” 不起作用。
- 在运行配置中添加vm参数也不起作用。
- 我测试了在这两个地方放置2个假路径,只要我有 dll在与sigar.jar相同的文件夹中......它在eclipse中运行良好。
问题是当我尝试导出我的项目的可运行.jar文件。我想两两件事:
- 我修改与捆NativeCode MANIFEST.MF文件:库/ SIGAR-AMD64-winnt.dll(我假设这里的路径是相对于项目文件夹) - >没有成功:
main starting!! no sigar-amd64-winnt.dll in java.library.path
org.hyperic.sigar.SigarException: no sigar-amd64-winnt.dll in
java.library.path
at org.hyperic.sigar.Sigar.loadLibrary(Sigar.java:172)
at org.hyperic.sigar.Sigar.<clinit>(Sigar.java:100)
at CpuData.main(CpuData.java:59)
cpudata(sigar s) starting!!! cpuInfo() starting!!!
Exception in thread
"main" java.lang.UnsatisfiedLinkError:
org.hyperic.sigar.Sigar.getCpuInfoList()[Lorg/hyperic/sigar/C puInfo;
at org.hyperic.sigar.Sigar.getCpuInfoList(Native Method)
at CpuData.cpuInfo(CpuData.java:103)
at CpuData.<init>(CpuData.java:29)
at CpuData.main(CpuData.java:59)
- 于是我决定把.dll文件在同一文件夹作为我project.jar,并在命令行中使用:JAVA -Djava.library.path =。/native/-jar C:\ cpu_usage_log \ cpu3.jar(我假设这里的路径是相对于包含p的文件夹roject.jar)......但同样没有成功:
Error: impossible to find or load the main class .library.path=..native
(我怀疑是我应该给一个主类名之后的第二个参数-Djava.library.path = /路/但我找不到那个假设的“主类”名称,或者网上的任何示例,指定这样的类别...是否是.dll中的主类?)
我不知道还有什么可以尝试在这一点上。我阅读了为他人工作的这两种解决方案,这让它更令人沮丧,因为我认为在阅读其他文章时我错过了或不明白的东西,而且我找不到(这是我第一次处理在Java项目中使用本地dll)。
你是否设法解决了这个问题。我也有同样的问题。 – 2016-07-18 18:20:28