• 欢迎访问本网站,技术教程,资源分享,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入东蓬莱!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏东部蓬莱吧

Sigar初始化工具类引入dll组件包

后台开发 Jokul 11个月前 (07-28) 386次浏览 0个评论 扫描二维码

前言

当javaWeb工程在获取服务器系统相关参数时,一般情况下会使用sigar。然而在使用sigar时,会根据服务器不同的系统版本需要引入不同的前置dll,so等文件,因使用sigar而需要二次配置服务器,略显麻烦。于是本教程解决的问题便是,直接在web项目中使用工具类初始化文件。

操作步骤:

  • 1.将sigar依赖的前置dll,so文件,全部放在sigar文件夹中,然后将sigar文件夹拷贝到放在resources(即存放配置文件的目录)
  • 2.创建工具类
  • import org.hyperic.sigar.Sigar;
    /**
    * sigar初始化工具类引入dll组件包
    */
    public class SigarUtils {
        //public final static Sigar sigar = initSigar();
    
        public static Sigar initSigar() {
            try {
                //此处只为得到依赖库文件的目录,可根据实际项目自定义
                //String file = Paths.get(PathKit.getWebRootPath(),  "files", "sigar",".sigar_shellrc").toString();
                //File classPath = new File(file).getParentFile();
                //File classPath = new File("C:/primeton/platform6/ide/eclipse/workspace/ywlcyz/src/org/gocom/components/test/sigar");//这里我直接把文件路径写死了
                //String sigarLibPath = classPath.getCanonicalPath();
                String sigarLibPath = SigarUtils.class.getClassLoader().getResource("sigar").toURI().getPath();
                String path = System.getProperty("java.library.path");
                //为防止java.library.path重复加,此处判断了一下
                if (!path.contains(sigarLibPath)) {
                    if (isOSWin()) {
                        path += ";" + sigarLibPath;
                        System.out.println(path);
                    } else {
                        path += ":" + sigarLibPath;
                    }
                    System.setProperty("java.library.path", path);
                }
                return new Sigar();
            } catch (Exception e) {
                return null;
            }
        }
        // 判断是否是window系统
        public static boolean isOSWin(){
            String OS = System.getProperty("os.name").toLowerCase();
            return OS.contains("win");
        }
    }
    
  • 3.在使用sigar获取参数前,先调用上面工具类初始化一下sigar即可
  • public static void main(String[] args) {
          try {
             //初始化sigar
            SigarUtils.initSigar();
            //获取相关参数
            Sigar sigar = new Sigar();
            Mem mem = sigar.getMem();
            // 内存总量
            System.out.println("内存总量:    " + mem.getTotal() / 1024L + "K av");
            // 当前内存使用量
            System.out.println("当前内存使用量:    " + mem.getUsed() / 1024L + "K used");
            // 当前内存剩余量
            System.out.println("当前内存剩余量:    " + mem.getFree() / 1024L + "K free");
            Swap swap = sigar.getSwap();
            // 交换区总量
            System.out.println("交换区总量:    " + swap.getTotal() / 1024L + "K av");
            // 当前交换区使用量
            System.out.println("当前交换区使用量:    " + swap.getUsed() / 1024L + "K used");
            // 当前交换区剩余量
            System.out.println("当前交换区剩余量:    " + swap.getFree() / 1024L + "K free");
           }catch (Exception e){
               e.printStackTrace();
          }
     }
    

    东部蓬莱 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
    转载请注明原文链接:Sigar初始化工具类引入dll组件包
    喜欢 (1)
    [支付宝]
    分享 (0)
    发表我的评论
    取消评论
    表情 贴图 加粗 删除线 居中 斜体 签到

    Hi,您需要填写昵称和邮箱!

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址