java使用sigar获取linux系统内存使用信息

天冰 发布于 2013/05/31 09:43
阅读 5K+
收藏 0
apache-tomcat-6.0.20/webapps/report-serverInfo/WEB-INF/lib下包含包:
----------------------
sigar.jar
sigar-x86-winnt.lib
libsigar-x86-linux.so
----------------------
在一台Linux机子上,运行正常。
但在另一台Linux机子上运行报错,错误信息如下:
java.lang.UnsatisfiedLinkError: org.hyperic.sigar.Mem.gather(Lorg/hyperic/sigar/Sigar;)V


估摸是动态链接库加载问题,但为什么一台机子可以,另一台就报错,不懂。求大神指导,给出解决建议~
加载中
0
天冰
天冰
问题已经找到 sigar依赖包的问题~
0
杨米欧
杨米欧
你好,请问linux环境下,你是将sigar.jar、jug-2.0.0-asl.jar、junit-3.8.2.jar、log4j-1.2.14.jar、libsigar-amd64-linux.so、libsigar-x86-linux.so都放 /WEB-INF/lib下
杨米欧
杨米欧
谢谢你的回答,现在是将这两个依赖文件放在了System.getProperty("java.library.path")路径下可以了,迟点试下你的方法
天冰
天冰
主要是 sigar.jar 如果linux环境是32位 依赖包是libsigar-x86-linux.so 如果是64位 依赖包是libsigar-amd64-linux.so 可以把这三个包都放在 lib下~
0
s
savvy
楼主怎么解决的啊?求指教啊。
天冰
天冰
你报的什么错~我的是依赖包问题~需要linux64位的依赖包~
0
邓小峰
邓小峰

 public static void main(String[] args) {
  System.out.println(System.getProperty("java.library.path"));
 }

验证一下你的libpath,注意:linux跟windows不一样的;

一般是放在/usr/lib下,呵呵

张冬
张冬
【续2】 2、把“ libsigar-amd64-linux.so libsigar-x86-linux.so sigar-amd64-winnt.dll sigar-x86-winnt.dll ”4个文件(或当前系统对应的那个文件)都放进获取到的其中一个路径,比如我的是放到了/usr/lib64,再运行,就正常了! (3条评论自下而上查看)
张冬
张冬
【续1】获取方法可以使用props.getProperty("java.library.path")或者层主的方法,比如我的获取到后有多个路径,其中有一个是/usr/lib64;【未完2】
张冬
张冬
这个才是正解啊!我折腾了一天,终于解决了。接手的项目,用到sigar,发现在Windows下正常,打包后在linux下运行就报错UnsatisfiedLinkError,后来发现我的Windows的jdk的bin下已经放入了需要的dll文件,而linux下没有。 解决方法及思路是: 1、获取linux下的java.library.path路径【未完】
0
蓝缘Y
蓝缘Y
本人已经解决了..其实很简单在src下新建一个包.把 sigar-x86-winnt.lib 
libsigar-x86-linux.so 这个鬼东西放进去就OK..运行就不会出错了..亲测成功
0
张冬
张冬

引用来自“邓小峰”的评论

 public static void main(String[] args) {
  System.out.println(System.getProperty("java.library.path"));
 }

验证一下你的libpath,注意:linux跟windows不一样的;

一般是放在/usr/lib下,呵呵

这个才是正解啊!我折腾了一天,终于解决了。接手的项目,用到sigar,发现在Windows下正常,打包后在linux下运行就报错UnsatisfiedLinkError,后来发现我的Windows的jdk的bin下已经放入了需要的dll文件,而linux下没有。
解决方法及思路是:
1、获取linux下的java.library.path路径,获取方法可以使用props.getProperty("java.library.path")或者层主的方法,比如我的获取到后有多个路径,其中有一个是/usr/lib64;
2、把“ libsigar-amd64-linux.so libsigar-x86-linux.so sigar-amd64-winnt.dll sigar-x86-winnt.dll ”4个文件(或当前系统对应的那个文件)都放进获取到的其中一个路径,比如我的是放到了/usr/lib64,再运行,就正常了!
返回顶部
顶部