gpt4 book ai didi

java - 锁屏显示 : Unable to load X11 when using JNA to lock display

转载 作者:太空宇宙 更新时间:2023-11-04 04:27:20 24 4
gpt4 key购买 nike

我试图通过 JNA 使用 X11 在 Java 中锁定显示(不允许用户使用键盘和鼠标)。

但是,当我尝试在 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 “ block ”):

        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 时,它都说它尚未安装。当我输入安装命令时,我被告知我已经有了最新版本。

这让我很困惑。如果有人能帮助阐明这一点,我将不胜感激!

最佳答案

JNA 在查找您正在调用的函数时需要能够找到 libX11.so*。在 Linux 上,您可能需要设置 LD_LIBRARY_PATH 以包含 X11 库的路径。

(来自评论):必须使用 LD_LIBRARY_PATH 才能查找依赖库,但设置系统属性 jna.library.path 将允许您指示可以在哪里找到显式加载的库(即使用 Native.loadLibrary() 加载的库)。

关于java - 锁屏显示 : Unable to load X11 when using JNA to lock display,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7647914/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com