JNI 不兼容苹果 ARM Arch

问题描述 投票:0回答:1

我一直在使用某种依赖项来实现事件侦听器,以在具有 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)
java arm apple-m1 event-listener jnativehook
1个回答
0
投票

需要针对执行该代码的特定架构和操作系统来编译本机代码。您不能只在 ARM CPU 中使用 Intel 库。您需要从提供商处获取适当的构建,或者如果您有源代码,则可以自行构建。

© www.soinside.com 2019 - 2024. All rights reserved.