Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/91.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mac OS X中的SIGAR For Java似乎正在锁定_Java_Macos_Compilation_Freeze_Sigar - Fatal编程技术网

Mac OS X中的SIGAR For Java似乎正在锁定

Mac OS X中的SIGAR For Java似乎正在锁定,java,macos,compilation,freeze,sigar,Java,Macos,Compilation,Freeze,Sigar,我一直在尝试编写一个简单的CPU利用率监视器,作为一个更大项目的概念证明。我正在用EclipseJuno写作。当我按“Run”时,我的应用程序按预期工作-CPU利用率以百分比显示,每秒更新一次。然而,当我将其导出到可执行jar时,应用程序似乎被锁定了——它从不显示百分比,也从不更新。我已经确定GUI是好的,但是由于一些无法解释的原因,我的cpuUtilization方法从未返回一个百分比而不抛出异常。更奇怪的是,这个问题只有在程序导出时才会发生。SIGAR的文档非常糟糕,但我认为我使用它是正确的

我一直在尝试编写一个简单的CPU利用率监视器,作为一个更大项目的概念证明。我正在用EclipseJuno写作。当我按“Run”时,我的应用程序按预期工作-CPU利用率以百分比显示,每秒更新一次。然而,当我将其导出到可执行jar时,应用程序似乎被锁定了——它从不显示百分比,也从不更新。我已经确定GUI是好的,但是由于一些无法解释的原因,我的cpuUtilization方法从未返回一个百分比而不抛出异常。更奇怪的是,这个问题只有在程序导出时才会发生。SIGAR的文档非常糟糕,但我认为我使用它是正确的。程序的所有其余部分似乎都正常工作,所以我只包括CPUReader类。它是在构造CPUMonitorGUI类时构造的,CPUMonitorGUI每秒调用一次cpuUtilization。一些附加说明:我已经导入了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构建路径中