簡體   English   中英

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

[英]Getting NoClassDefFoundError -> com/sun/jna/platform/win32/Psapi with Eclipse

我的程序依賴以下代碼來獲取可用系統 memory:

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;

更新:Workspace中的每個項目中刪除每次出現的oshi-core之后(以消除暫時沖突依賴的可能性 - 只剩下4.2.1 )。 現在我得到的錯誤是-> java.lang.NoClassDefFoundError: com/sun/jna/platform/win32/VersionHelpers

pom.xml ,我添加了 oshi 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 jna-platform版本 5.3.0 和更新版本中。 為您提供錯誤的方法調用所需的GetPerformanceInfo()方法位於com.sun.jna.platform.win32.Psapi class 中,在 jna jna-platform版本 4.3.0 和更高版本中。 如果您的類加載器找不到這些類,則說明您沒有將正確的 jars 鏈接到您的項目——或者您將不正確的 jars 與正確的鏈接一起鏈接。

Maven 按級別解析依賴項......首先它會執行您在 POM 中列出的所有依賴項(按順序),然后是這些項目的傳遞依賴項(按順序)等等。 確保使用最新版本的 JNA 可以通過以下任一(或兩者)來強制執行:

  • 在 POM 的依賴項列表中更早地指定oshi-core依賴項,特別是在任何依賴於早期 JNA 版本的項目之前。
  • 在頂級 POM 中明確指定jnajna-platform版本 (5.5.0)。

此外,在 Eclipse 中,請務必通過菜單go 更新 Maven 項目,以確保在 POM 更改后您的依賴項保持同步。

您的本地存儲庫可能沒有下載更新的 jar,在這種情況下,您可以清除它(或從C:\Users\<username>\.m2\repository中刪除任何 JNA 工件或所有內容並讓它重建。 )

還要檢查 Eclipse 中的類路徑。 如果您在設置 POM 以從 Maven 獲取它們之前手動添加了依賴項(例如,到 JNA),那么您可能正在使用它們。

如果上述提示不能解決您的問題,請將依賴項部分的內容發布到您的pom.xml文件中,以便我們提供更多建議。

似乎oshi-core依賴於 Sun / Oracle JVM 的內部未記錄功能,並且您正在運行另一個和/或更新的 JVM 的未記錄功能。 這就是使用未記錄功能的風險。

獲取支持您正在使用的 JVM 版本的更新/其他版本的oshi-core ,或切換到使用 oshi oshi-core支持的 JVM。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM