這是本文件的舊版!
Can't obtain static method的Error
Problem
有天某個客戶說我們的軟體服務無法啟動,傳回來的debug log中,包含以下錯誤:
java.lang.UnsatisfiedLinkError: Can't obtain static method fromNative(Method, Object) from class com.sun.jna.Native
How to duplicate and resolve?
首先這個問題是由於JNA版本不同造成的。我們使用4.1.0版本的JNA,com.sun.jna.Native中並沒有fromNative(Method, Object),確認過JNA GitHub後,這應是4.3.0後加入的method。
因此,面對此問題,我懷疑可能是:
- 我們軟體的third-party libraries包含新版本JNA。
- 我們軟體參考到客戶電腦中的JNA。
第一個問題我透過Classpath Inspector確認過,並非我們問題。第二個問題,首先我透過設定CLASSPATH到環境變數中指定到4.3.0的jar檔路徑,並沒辦法重現出問題。