gpt4 book ai didi

java - 使用 Eclipse 获取 NoClassDefFoundError -> com/sun/jna/platform/win32/Psapi

转载 作者:行者123 更新时间:2023-11-30 05:24:22 25 4
gpt4 key购买 nike

我的程序依赖以下代码来获取可用的系统内存:

import oshi.SystemInfo;
import oshi.hardware.HardwareAbstractionLayer;


SystemInfo si = new SystemInfo();
HardwareAbstractionLayer hal = si.getHardware();

// Next line throws exception: NoClassDefFoundError -> com/sun/jna/platform/win32/Psapi
long availableBytes = hal.getMemory().getAvailable();
double availableMegabytes = ((double) availableBytes) / 1048576;
double availableGigabytes = ((double) availableMegabytes)/1024;

更新:删除所有出现的 oshi-core 后来自Workspace中的每个项目(为了消除暂时冲突依赖的可能性 - 只剩下4.2.1)。现在我得到的错误是 -> java.lang.NoClassDefFoundError: com/sun/jna/platform/win32/VersionHelpers

pom.xml我添加了oshi-core依赖性 - 我已经尝试了从版本 3.4.0 开始的几乎每个版本到最新版本4.2.1它们都会导致相同的错误。

我意识到oshi-core依赖 jnajna-platform 。在 Dependency Hierarchy我看到两者都已解析(编译)为版本 5.5.0 .

是什么原因导致此错误以及如何解决?

谢谢!

附注

我见过一些其他线程有类似的错误,但找不到任何有这个确切问题的线程(缺少 com/sun/jna/platform/win32/Psapi )

最佳答案

虽然您在评论中指出您认为最新版本的 JNA 正在得到解决,但这些错误表明您的项目没有最新版本的 jna-platform (或者可能它在类路径上链接了多个版本)。 NoClassDefFoundError 几乎总是如此。当您按照正确的方向进行故障排除时,有证据表明存在旧的 jna-platform项目中某处的版本。

com.sun.jna.platform.win32.VersionHelpers 类(class)在jna-platform版本 5.3.0 及更高版本。 GetPerformanceInfo()给您错误的方法调用所需的方法位于 com.sun.jna.platform.win32.Psapi 中类(class)在jna-platform版本 4.3.0 及更高版本。如果您的类加载器找不到这些类,则说明您没有将正确的 jar 链接到您的项目,或者您的项目中链接了不正确的 jar。

Maven resolves dependencies by level ...首先它执行您在 POM 中列出的所有依赖项(按顺序),然​​后是这些项目的传递依赖项(按顺序)等等。确保使用最新版本的 JNA 可以通过以下任一(或两者)强制执行:

  • 指定oshi-core依赖项列表中较早的依赖项在你的 POM 中,特别是在任何依赖于JNA 的早期版本。
  • 明确指定 jnajna-platform顶级 POM 中的版本 (5.5.0)。

此外,在 Eclipse 中,请务必通过菜单访问 Update Maven Project确保 POM 更改后您的依赖项保持同步。

您的本地存储库可能没有下载更新的 jar,在这种情况下,您可以清除它(或者只是从 C:\Users\<username>\.m2\repository 中删除任何 JNA 工件或所有内容,然后让它重建。)

还要检查 Eclipse 中的类路径。如果您在设置 POM 以从 Maven 获取依赖项之前手动添加了依赖项(例如,添加到 JNA),那么您可以使用这些依赖项。

如果上述提示不能解决您的问题,请将依赖项部分的内容发布到您的pom.xml文件以便我们提供额外的建议。

关于java - 使用 Eclipse 获取 NoClassDefFoundError -> com/sun/jna/platform/win32/Psapi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58966339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com