添加依赖
JNA(Java Native Access )提供一组Java工具类用于在运行期间动态访问系统本地库(native library:如Window的dll)而不需要编写任何Native/JNI代码。开发人员只要在一个java接口中描述目标native library的函数与结构,JNA将自动实现Java接口到native function的映射。
OSHI(Operating System and Hardware Information)是一个开源的Java库,用于获取和操作操作系统和硬件信息。它提供了一组简单易用的API,可以用于检索和监控诸如操作系统类型、处理器信息、内存使用情况、硬盘信息、网络接口等系统和硬件相关的数据。
1 | <dependency> |
更多版本:mvnrepository
模型
CpuModel
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29package com.heifan.code.domain.monitor;
import com.alibaba.fastjson.annotation.JSONField;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
*
* @author HiF
* @date 2024/8/9 10:43
*/
public class CpuModel {
private String name;
private String packageName;
private String core;
private int coreNumber;
private String logic;
private String used;
private String idle;
}DiskModel
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21package com.heifan.code.domain.monitor;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
*
* @author HiF
* @date 2024/8/9 10:44
*/
public class DiskModel {
private String total;
private String available;
private String used;
private String usageRate;
}MemoryModel
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21package com.heifan.code.domain.monitor;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
*
* @author HiF
* @date 2024/8/9 10:44
*/
public class MemoryModel {
private String total;
private String available;
private String used;
private String usageRate;
}MonitorListVO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23package com.heifan.code.domain.monitor;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
*
* @author HiF
* @date 2024/8/9 10:44
*/
public class MonitorListVO {
private SystemModel system;
private CpuModel cpu;
private MemoryModel memory;
private DiskModel disk;
private Long time;
}SwapModel
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16package com.heifan.code.domain.monitor;
import lombok.Data;
/**
*
* @author HiF
* @date 2024/8/9 10:44
*/
public class SwapModel {
private String total;
private String available;
private String used;
private String usageRate;
}SystemModel
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19package com.heifan.code.domain.monitor;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
*
* @author HiF
* @date 2024/8/9 10:44
*/
public class SystemModel {
private String os;
private String ip;
private String day;
}
工具类
MonitorUtil
1 | package com.heifan.code.utils; |
使用
1 |
|
效果
1 | { |
可能遇到的问题
runtime exception:Unmapped relationship: 7
1 | { |
解决方法:降低jna-platform的版本。上述两个版本实测兼容。
总结
从成熟的项目里还是能学到东西的。