使用OSHI调用get()方法时抛出NoClassDefFoundError问题求助
解决OSHI调用get()方法抛出NoClassDefFoundError的问题
这问题我熟!你遇到的java.lang.NoClassDefFoundError: com/sun/jna/platform/win32/Variant$VARIANT本质是依赖缺失——OSHI本身依赖JNA(Java Native Access)和JNA Platform两个核心库,你只添加了OSHI的独立Jar包,但没把它依赖的JNA相关Jar也加入项目类路径,导致运行时找不到这个关键类。
具体解决步骤:
- 首先确认你需要补充的两个依赖Jar包(版本要和你使用的OSHI版本匹配,比如OSHI 6.4.0对应JNA 5.13.0):
jna-x.x.x.jarjna-platform-x.x.x.jar
- 在NetBeans中添加这些Jar:
- 右键你的项目 → 选择「Properties」(属性)
- 左侧导航栏选择「Libraries」(库)
- 点击「Add JAR/Folder」,选中下载好的
jna.jar和jna-platform.jar添加到项目库中 - 确保这两个Jar同时出现在「Compile」和「Run」的类路径列表里
额外小提示:
如果不想手动管理Jar包,建议改用Maven或Gradle构建项目,这样会自动拉取OSHI的所有依赖,彻底避免手动漏加的问题。比如Maven的依赖配置如下:
<dependency> <groupId>com.github.oshi</groupId> <artifactId>oshi-core</artifactId> <version>你的OSHI版本号</version> </dependency>
补全依赖后重新运行你的代码,应该就能正常获取CPU温度这类系统信息了。
内容的提问来源于stack exchange,提问作者asg66




