【发布时间】:2013-03-22 12:14:09
【问题描述】:
(这可能是我犯的一个明显错误,但现在 6 小时后我无法让它工作。)
我正在尝试在我的 eclipse 项目中使用 sigar.jar 获取 CPU 信息(现在只是测试 sigar API)。
它在eclipse中运行没有问题:
- 它在 Eclipse 中工作的原因是将 dll 放在与 sigar.jar
- 我测试了将 dll 的路径添加为“本机代码属性” 在构建路径配置对话框中没有任何效果。
- 在运行配置中添加 vm 参数也无效。
- 我测试了在这 2 个地方放置 2 条假路径,只要我有 dll 在与 sigar.jar 相同的文件夹中...它在 eclipse 中运行良好。
问题是当我尝试为我的项目导出可运行的 .jar 文件时。我尝试了两件事:
- 我用 Bundle-NativeCode 修改了 MANIFEST.MF 文件:libs/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 (我假设这里的路径是相对于包含 project.jar 的文件夹)......但同样没有成功:
错误:无法找到或加载主类 .library.path=..native
(我怀疑我应该在 -Djava.library.path=./path/ 之后给出一个主类名称作为第二个参数,但我找不到那个假定的“主类”名称,或者在web 确实指定了这样一个类...它是 .dll 中的主类吗?)
我现在真的不知道还能尝试什么。我读了这两个对其他人有用的解决方案,这让我更加沮丧,因为我想这可能是我在阅读其他帖子时错过或不理解的一些明显的东西,而我就是找不到(这是我第一次处理在 Java 项目中使用本机 dll)。
【问题讨论】:
-
您是否设法解决了这个问题。我也有同样的问题。