Eclipse中Java项目引入Oshi库遇ClassNotFoundException问题求助
Oshi库ClassNotFoundException问题排查与解决
问题原因分析
出现ClassNotFoundException通常有以下两种核心原因:
- 依赖未正确加入类路径:即使下载了oshi-core jar,若未将其(及依赖包)正确添加到项目的类路径中,JVM运行时找不到对应的类文件。
- 缺失传递依赖:Oshi-core并非独立运行的库,它依赖多个第三方库(如JNA、日志组件等),仅单独引入oshi-core jar会导致依赖缺失。
正确的依赖配置方式
1. Maven自动管理推荐
直接在项目的pom.xml中添加以下依赖,Maven会自动下载oshi-core及其所有传递依赖,无需手动处理:
<dependency> <groupId>com.github.oshi</groupId> <artifactId>oshi-core</artifactId> <version>6.3.1</version> </dependency>
2. 手动添加Jar包(不推荐)
若必须手动导入,需同时引入以下所有Jar包:
oshi-core-6.3.1.jarslf4j-api-1.7.36.jar(日志接口依赖)commons-lang3-3.12.0.jar(工具类依赖)commons-math3-3.6.1.jar(数学计算依赖)jna-5.12.1.jar(Java本地调用核心依赖)jna-platform-5.12.1.jar(JNA平台扩展依赖)
验证与修复步骤
- 检查类路径配置:在IDE中确认所有必要Jar包已添加到项目库中。比如IDEA可通过
File > Project Structure > Libraries查看,Eclipse通过Project Properties > Java Build Path > Libraries检查。 - 清理重建项目:执行项目清理操作(如Maven的
mvn clean install命令),清除缓存后重新构建项目,避免依赖缓存导致的加载异常。 - 确认代码导入正确:确保代码中导入的Oshi类包路径正确:
import oshi.SystemInfo; import oshi.hardware.CentralProcessor; import oshi.hardware.HardwareAbstractionLayer; public class HardwareInfoTest { public static void main(String[] args) { SystemInfo systemInfo = new SystemInfo(); HardwareAbstractionLayer hardware = systemInfo.getHardware(); CentralProcessor processor = hardware.getProcessor(); System.out.println(processor.toString()); } }
内容的提问来源于stack exchange,提问作者Hans Ricardo Davila Acuña
相关产品推荐
相关产品推荐

