gpt4 book ai didi

java - JNA 库和 native 库未找到错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:56:04 26 4
gpt4 key购买 nike

我想使用 JNA 检测 Linux (Ubuntu 14) 上的前台应用程序。我点击了这个链接 Find out what application (window) is in focus in Java但我收到以下错误:

Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'XLib': Native library (linux-x86-64/libXLib.so) not found in resource path ([file:/home/zzhou/workspace/home_prioritization_plus/bin/, file:/home/zzhou/Downloads/jna-4.1.0.jar, file:/home/zzhou/Downloads/jna-platform-4.1.0.jar])
at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:271)
at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:398)
at com.sun.jna.Library$Handler.<init>(Library.java:147)
at com.sun.jna.Native.loadLibrary(Native.java:412)
at com.sun.jna.Native.loadLibrary(Native.java:391)
at FunctionalityTest$XLib.<clinit>(FunctionalityTest.java:15)
at FunctionalityTest.main(FunctionalityTest.java:23)

代码是:

import com.sun.jna.Native;
import com.sun.jna.Platform;
import com.sun.jna.Pointer;
import com.sun.jna.platform.unix.X11;
import com.sun.jna.win32.StdCallLibrary;

public class FunctionalityTest {

static class Psapi {
static { Native.register("psapi"); }
public static native int GetModuleBaseNameW(Pointer hProcess, Pointer hmodule, char[] lpBaseName, int size);
}

public interface XLib extends StdCallLibrary {
XLib INSTANCE = (XLib) Native.loadLibrary("XLib", Psapi.class); // <-- PROBLEM

int XGetInputFocus(X11.Display display, X11.Window focus_return, Pointer revert_to_return);
}

public static void main(String args[]) {
if(Platform.isLinux()) { // Possibly most of the Unix systems will work here too, e.g. FreeBSD
final X11 x11 = X11.INSTANCE;
final XLib xlib= XLib.INSTANCE;
X11.Display display = x11.XOpenDisplay(null);
X11.Window window=new X11.Window();
xlib.XGetInputFocus(display, window,Pointer.NULL);
X11.XTextProperty name=new X11.XTextProperty();
x11.XGetWMName(display, window, name);
System.out.println(name.toString());
}
}

}

为了导入 JNA 库,我从 https://github.com/twall/jna 下载了 jna 和 jna-platform并在 Eclipse 中使用 Configure Build Path... 添加库。我没有安装任何东西。这可能是问题的根源吗?

感谢您的帮助。

最佳答案

Afaik,即使对于 JNA,您也必须用 Java 加载库才能让 JNA 找到它。 (针对 win32 测试,而非 linux)

Native.loadLibrary 上面试试这个:

System.loadLibrary("XLib");

关于java - JNA 库和 native 库未找到错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25978763/

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