日期:2014-05-19  浏览次数:20780 次

关于java使用sigar访问电脑内存信息出现的问题!
1:代码如下:
MemoryBean bean = new MemoryBean();
Sigar sigar = new Sigar();
CpuPerc cpu = sigar.getCpuPerc();
bean.setCpuUser("用户使用CPU情况:" + CpuPerc.format(cpu.getUser()).replace("%", ""));
bean.setCpuSys("系统使用CPU情况:" + CpuPerc.format(cpu.getSys()).replace("%", ""));
bean.setCpuTotal("电脑使用CPU情况:" + CpuPerc.format(cpu.getCombined()).replace("%", "")); 
Mem mem = sigar.getMem();
bean.setMemoryTotal("电脑内存总数:" + (mem.getTotal() / 1024 / 1024-mem.getTotal() / 1024 / 1024));
bean.setMemoryUse("内存使用数量:" + (mem.getTotal() / 1024 / 1024-mem.getUsed() / 1024 / 1024));
bean.setMemoryUnused("内存未用数量:" + (mem.getTotal() / 1024 / 1024-mem.getFree() / 1024 / 1024));  


这段代码在main方法运行正常,没有任何问题,但放在action通过浏览器访问运行就报错(调用的同一个类,同一个方法),sigar.jar是正常导入的!

异常如下:
java.lang.UnsatisfiedLinkError: org.hyperic.sigar.Cpu.gather(Lorg/hyperic/sigar/Sigar;)V

但我在JAR包下面能找到这个方法,并且MAIN方法运行正常,为什么action就不行呢?

------解决方案--------------------
可能不是放到lib目录,试试放到bin目录

探讨

sigar.jar 已经放到项目中!

另外sigar.jar
sigar-amd64-winnt.dll
sigar-x86-winnt.dll
sigar-x86-winnt.lib

我都放在TOMCAT 下的LIB包下了!