no libsigar-amd64-linux.so in java.library.path



项目场景:

使用sigar获取服务器信息




问题描述:

java执行报错

1 [main] DEBUG Sigar  - no libsigar-amd64-linux.so in java.library.path
org.hyperic.sigar.SigarException: no libsigar-amd64-linux.so in java.library.path
        at org.hyperic.sigar.Sigar.loadLibrary(Sigar.java:172)
        at org.hyperic.sigar.Sigar.<clinit>(Sigar.java:100)
        at com.cloud.entity.SigarUtil.<clinit>(SigarUtil.java:11)
        at com.cloud.GetLinuxInformationMain.main(GetLinuxInformationMain.java:24)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:483)
        at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
        at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)
Exception in thread "main" java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:483)
        at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
        at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)
Caused by: java.lang.UnsatisfiedLinkError: org.hyperic.sigar.Mem.gather(Lorg/hyperic/sigar/Sigar;)V
        at org.hyperic.sigar.Mem.gather(Native Method)
        at org.hyperic.sigar.Mem.fetch(Mem.java:30)
        at org.hyperic.sigar.Sigar.getMem(Sigar.java:304)
        at com.cloud.entity.SigarUtil.memory(SigarUtil.java:148)
        at com.cloud.GetLinuxInformationMain.main(GetLinuxInformationMain.java:24)
        ... 8 more
 



原因分析:

需要用到库

sigar-amd64-winnt.dll

libsigar-amd64-linux.so

libsigar-x86-linux.so




解决方案:

  • windows需要用到库:sigar-amd64-winnt.dll 放入路径:C:\Windows\System32
  • linux需要用到库:libsigar-amd64-linux.so和libsigar-x86-linux.so 放入/usr/lib64 

如linux无root权限,可以指定:

在linux执行jar执行时指定库:java -Djava.library.path=指定库所在的目录 -jar cloud.jar 

如我的执行jar包在路径/home/app/sigar-cloud下面,libsigar-amd64-linux.so文件在/home/app/sigar-cloud/library下面

/home/app/sigar-cloud/jdk1.8.0_11/bin/java -Djava.library.path/home/app/sigar-cloud/library -jar /home/app/sigar-cloud/cloud-1.0-SNAPSHOT.jar

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值