我正嘗試通過JNA使用X11在Java中鎖定顯示器(禁止用戶使用鍵盤和鼠標)。LockDisplay:使用JNA鎖定顯示器時無法加載X11
然而,當我嘗試在Windows上運行的應用程序,我得到這個錯誤:
java.lang.UnsatisfiedLinkError: Unable to load library 'X11': com.sun.jna.Native.open(Ljava/lang/String;)J
at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:166)
at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:239)
at com.sun.jna.Library$Handler.<init>(Library.java:140)
at com.sun.jna.Native.loadLibrary(Native.java:393)
at com.sun.jna.Native.loadLibrary(Native.java:378)
at com.sun.jna.platform.unix.X11.<clinit>(X11.java:347)
at octostar.LinuxHelper.blockInput(LinuxHelper.java:77)
at .... ....
我的代碼是這樣的(輸入參數是一個布爾值 '塊'):
boolean returnVal = true;
X11.Display dpy = null;
final X11 x11 = X11.INSTANCE;
final Xss xss = Xss.INSTANCE;
try {
dpy = x11.XOpenDisplay(null);
if (block)
xss.XLockDisplay(dpy);
else
xss.XUnlockDisplay(dpy);
} catch (Exception ex){
returnVal = false;
} finally {
if (dpy != null)
x11.XCloseDisplay(dpy);
dpy = null;
}
return returnVal;
錯誤發生在X11.INSTANCE(這是行octostar.LinuxHelper.blockInput(LinuxHelper.java:77)在上面的錯誤消息)
在我的代碼的另一部分,我得到此錯誤:
java.lang.NoClassDefFoundError: Could not initialize class com.sun.jna.platform.unix.X11
at octostar.LinuxHelper.getIdleTimeMillis(LinuxHelper.java:50)
我試圖在終端輸入X11,他們告訴我做的安裝,這是我以後做了,但每次隨後的時間我型X11它說,它沒有安裝。當我輸入安裝命令時,我被告知我已經有最新版本了。
這對我來說都非常困惑。如果有人能夠幫助解釋這一點,我將不勝感激!
你說的是'com.sun.jna.examples.unix.X11.Display'類嗎?我傾向於這樣認爲。 – Riduidel
X11不是一個可執行程序,所以輸入「X11」不會運行任何東西。它是一個圖書館(和程序)的集合;您需要「客戶端」庫來通過JNA調用X11庫函數。 – technomage
@Riduidel你在說什麼?錯誤發生在我嘗試獲取X11實例的部分,但是,我最終試圖通過x11.XOpenDisplay(null) – Angeline