问题描述
我需要一个KeyListener,它也可以在集中的GUI组件之外工作,因此在进行研究之后,我遇到了JNativeHook库。但是,一旦我下载了ZIB文件(来自here)并将jnativehook-2.1.0.jar添加到我的Eclipse项目中(属性-> Java构建路径->库->添加外部Jar),就会出现错误消息在运行测试程序时发生。
错误:无法找到或加载主类密钥。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());
}
}
解决方法
我遇到了同样的问题。
对我来说,解决方案是将JNativeHook.jar
放在classpath
中,而不是modulepath
。