[英]Getting NoClassDefFoundError: com/sun/jna/win32/StdCallLibrary$StdCallCallback using ghost4j in ubuntu
[英]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
依賴於jna
和jna-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 可以通過以下任一(或兩者)來強制執行:
oshi-core
依賴項,特別是在任何依賴於早期 JNA 版本的項目之前。jna
和jna-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.