Я пытаюсь заблокировать отображение (не позволяя пользователю использовать клавиатуру и мышь) в Java, используя X11 через JNA.
Однако, когда я пытаюсь запустить приложение в 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, он говорит, что он не установлен.Когда я набираю команду установки, мне говорят, что у меня уже установлена последняя версия.
Это все очень смущает меня.Если бы кто-нибудь мог помочь пролить свет на это, я был бы очень признателен!