我需要一个 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());
}
}