我一直在使用某种依赖项来实现事件侦听器,以在具有 Intel 芯片的 Windows 和 Mac 系统上进行鼠标和键盘跟踪。然而,在过渡到配备 M1 芯片(ARM 架构 - Apple Silicon 芯片)的 Mac 时,我遇到了一个异常。您能建议一个适合这种情况的替代库吗?
GlobalScreen.registerNativeHook();
GlobalScreen.addNativeKeyListener(this);
GlobalScreen.addNativeMouseListener(this);
GlobalScreen.addNativeMouseMotionListener(this);
GlobalScreen.addNativeMouseWheelListener(this);
<dependency>
<groupId>com.1stleg</groupId>
<artifactId>jnativehook</artifactId>
<version>2.1.0</version>
</dependency>
对于 Intel 芯片运行良好的依赖项
Apr 01, 2024 11:26:16 PM org.jnativehook.DefaultLibraryLocator getLibraries
SEVERE: Unable to extract the native library /org/jnativehook/lib/darwin/unsupported/libJNativeHook.dylib!
Exception in thread "JavaFX Application Thread" java.lang.UnsatisfiedLinkError: 'java.lang.Integer org.jnativehook.GlobalScreen.getAutoRepeatRate()'
at org.jnativehook.GlobalScreen.getAutoRepeatRate(Native Method)
at org.jnativehook.GlobalScreen.<clinit>(Unknown Source)
at com.staffViz.controllers.main_controllers.RunningTrackerModuleController.itemStateChanged(RunningTrackerModuleController.java:177)
at com.staffViz.controllers.main_controllers.RunningTrackerModuleController.initialize(RunningTrackerModuleController.java:121)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2670)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2563)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2531)
at com.staffViz.controllers.main_controllers.ProjectMainScreenController.startTracker(ProjectMainScreenController.java:1362)
at com.staffViz.listViewCell.TaskCell.startTracker(TaskCell.java:325)
at com.staffViz.listViewCell.TaskCell.lambda$updateItem$7(TaskCell.java:168)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:232)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:189)
at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
at javafx.event.Event.fireEvent(Event.java:198)
at javafx.scene.Scene$ClickGenerator.postProcess(Scene.java:3688)
at javafx.scene.Scene$MouseHandler.process(Scene.java:3993)
at javafx.scene.Scene.processMouseEvent(Scene.java:1890)
at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2708)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:411)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:301)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$2(GlassViewEventHandler.java:450)
at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:424)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:449)
at com.sun.glass.ui.View.handleMouseEvent(View.java:551)
at com.sun.glass.ui.View.notifyMouse(View.java:937)
at com.sun.glass.ui.mac.MacView.notifyMouse(MacView.java:127)
需要针对执行该代码的特定架构和操作系统来编译本机代码。您不能只在 ARM CPU 中使用 Intel 库。您需要从提供商处获取适当的构建,或者如果您有源代码,则可以自行构建。