Java 覆盆子皮上的JNativeHook

Java 覆盆子皮上的JNativeHook,java,raspberry-pi,debian-based,Java,Raspberry Pi,Debian Based,我试图在Raspberry Pi平台上使用JNativeHook 我有一个简单的java可执行文件,它在Mac和Windows上运行得非常好,我认为在基于Debian的linux发行版上应该可以正常工作 然而,在启动时,我得到: Exception in thread "AWT-EventQueue-0" java.lang.ExceptionInInitializerError at Main.<init>(Main.java:159) at Main$1.run(Main.jav

我试图在Raspberry Pi平台上使用JNativeHook

我有一个简单的java可执行文件,它在Mac和Windows上运行得非常好,我认为在基于Debian的linux发行版上应该可以正常工作

然而,在启动时,我得到:

Exception in thread "AWT-EventQueue-0" java.lang.ExceptionInInitializerError
at Main.<init>(Main.java:159)
at Main$1.run(Main.java:129)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:721)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:682)
at java.awt.EventQueue$3.run(EventQueue.java:680)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:691)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)
Caused by: java.lang.RuntimeException: Unable to locate the native library.
at org.jnativehook.GlobalScreen.loadNativeLibrary(Unknown Source)
at org.jnativehook.GlobalScreen.<init>(Unknown Source)
at org.jnativehook.GlobalScreen.<clinit>(Unknown Source)
... 16 more
线程“AWT-EventQueue-0”java.lang.ExceptionInInitializeError中的异常 在Main(Main.java:159) Main$1.run(Main.java:129) 在java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)中 位于java.awt.EventQueue.dispatchEventImpl(EventQueue.java:721) 在java.awt.EventQueue.access$200(EventQueue.java:103) 在java.awt.EventQueue$3.run(EventQueue.java:682) 在java.awt.EventQueue$3.run(EventQueue.java:680) 位于java.security.AccessController.doPrivileged(本机方法) 位于java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 位于java.awt.EventQueue.dispatchEvent(EventQueue.java:691) 位于java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244) 在java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)中 位于java.awt.EventDispatchThread.PumpeEventsforHierarchy(EventDispatchThread.java:151) 位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147) 位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139) 位于java.awt.EventDispatchThread.run(EventDispatchThread.java:97) 原因:java.lang.RuntimeException:找不到本机库。 位于org.jnativehook.GlobalScreen.loadNativeLibrary(未知来源) 在org.jnativehook.GlobalScreen(未知来源) 在org.jnativehook.GlobalScreen(未知来源) ... 还有16个
因此,为了在Linux上工作,我必须做一些额外的工作。

您需要将jar中包含的本机库重新编译到ARM。它应该在Linux上编译而不会出现任何问题,使用
antcompilejar
构建。如果您想报告,我将与您合作,以获得支持的arm二进制文件