0

我需要一个 KeyListener,它也可以在一个集中的 GUI 组件之外工作,所以在进行研究之后,我遇到了 JNativeHook 库。但是,只要我下载 ZIB 文件(从这里)并将 jnativehook-2.1.0.jar 添加到我的 Eclipse 项目(属性 -> Java 构建路径 -> 库 -> 添加外部 Jar),运行时会出现错误消息测试程序。

错误:无法找到或加载主类 key.GlobalKeyListenerExample 原因:java.lang.NoClassDefFoundError: org/jnativehook/keyboard/NativeKeyListener

这是我第一次使用外部 Jar,所以我想问一下我是否做错了什么,或者我需要做什么来解决这个问题。

我的程序:

package key;

import org.jnativehook.GlobalScreen;
import org.jnativehook.NativeHookException;
import org.jnativehook.keyboard.NativeKeyEvent;
import org.jnativehook.keyboard.NativeKeyListener;

public class GlobalKeyListenerExample implements NativeKeyListener {
    public void nativeKeyPressed(NativeKeyEvent e) {
        System.out.println("Key Pressed: " + NativeKeyEvent.getKeyText(e.getKeyCode()));

        if (e.getKeyCode() == NativeKeyEvent.VC_ESCAPE) {
            try {
                GlobalScreen.unregisterNativeHook();
            } catch (NativeHookException e1) {
                
                e1.printStackTrace();
            }
        }
    }

    public void nativeKeyReleased(NativeKeyEvent e) {
        System.out.println("Key Released: " + NativeKeyEvent.getKeyText(e.getKeyCode()));
    }

    public void nativeKeyTyped(NativeKeyEvent e) {
        System.out.println("Key Typed: " + e.getKeyText(e.getKeyCode()));
    }

    public static void main(String[] args) {
        try {
            GlobalScreen.registerNativeHook();
        }
        catch (NativeHookException ex) {
            System.err.println("There was a problem registering the native hook.");
            System.err.println(ex.getMessage());

            System.exit(1);
        }

        GlobalScreen.addNativeKeyListener(new GlobalKeyListenerExample());
    }
}
4

1 回答 1

2

我遇到过同样的问题。

我的解决方案是把JNativeHook.jar,classpath而不是modulepath.

于 2020-11-14T23:37:30.653 回答