gpt4 book ai didi

java - Mac OS X 中的 SIGAR For Java 似乎锁定了

转载 作者:行者123 更新时间:2023-12-01 14:51:24 25 4
gpt4 key购买 nike

我一直在尝试编写一个简单的 CPU 利用率监视器作为大型项目的概念证明。我正在 Eclipse Juno 中写作。当我按“运行”时,我的应用程序按预期工作 - CPU 利用率显示为每秒更新一次的百分比。但是,当我将其导出到可执行 jar 时,应用程序似乎锁定了 - 它从不显示百分比,也从不更新。我已经确定 GUI 没问题,但由于某些无法解释的原因,我的 cpuUtilization 方法永远不会返回百分比而不引发异常。更奇怪的是,这个问题只有在程序导出时才会出现。 SIGAR 的文档相当糟糕,但我认为我使用它是正确的。该程序的所有其余部分似乎都可以工作,因此我只包含 CPUReader 类。它是在构造CPUMonitorGUI类时构造的,cpuUtilization由CPUMonitorGUI每秒调用一次。一些附加说明:我导入了 sigar.jar,但没有导入 log4j.jar。这样做没有什么区别。另外,在 Eclipse 中,导出时我选择了“将所需的库打包到生成的 JAR 中”。

package cpuperc;
import org.hyperic.sigar.CpuPerc;
import org.hyperic.sigar.SigarException;
import org.hyperic.sigar.Humidor;
import org.hyperic.sigar.SigarProxy;

public class CPUReader
{
static Humidor h;
public CPUReader()
{
h = Humidor.getInstance();
}
public double cpuUtilization() throws SigarException
{
//Returns CPU utilization as truncated two-decimal percent
SigarProxy sp = h.getSigar();
CpuPerc cp = sp.getCpuPerc();
double combined;
double total;
double idle;
double percentUsed;
int truncate = 0;
//get CPU times
combined = cp.getCombined();
idle = cp.getIdle();
total = idle + combined;
//determine percent and truncate
percentUsed = ((double)combined/total)*100;
truncate = (int)(percentUsed*100.0);
percentUsed = (double)truncate/100;
return(percentUsed);
}
}

谢谢!

最佳答案

经过更多实验,我发现程序卡住是因为它正在寻找特定于操作系统和架构的 SIGAR 库。在本例中,它需要 64 位通用 Mac OS X 驱动程序。然而,SIGAR 以 .dylib 文件形式提供这些文件,Eclipse 拒绝加载该文件。 .dylib 文件必须打包在 .zip 存档中,然后将其添加到 Eclipse 构建路径中。

关于java - Mac OS X 中的 SIGAR For Java 似乎锁定了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14802456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com