未找到 JNativeHook Class
JNativeHook Class not found
我需要一个 KeyListener,它也可以在专注的 GUI 组件之外工作,所以在进行研究之后,我遇到了 JNativeHook 库。但是一旦我下载了 ZIB 文件(来自 here)并将 jnativehook-2.1.0.jar 添加到我的 Eclipse 项目中(属性 -> Java 构建路径 -> 库 -> 添加外部 Jar)在 运行 测试程序时出现错误消息。
Error: Could not find or load main class key.GlobalKeyListenerExample
Caused by: 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
。
我需要一个 KeyListener,它也可以在专注的 GUI 组件之外工作,所以在进行研究之后,我遇到了 JNativeHook 库。但是一旦我下载了 ZIB 文件(来自 here)并将 jnativehook-2.1.0.jar 添加到我的 Eclipse 项目中(属性 -> Java 构建路径 -> 库 -> 添加外部 Jar)在 运行 测试程序时出现错误消息。
Error: Could not find or load main class key.GlobalKeyListenerExample Caused by: 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
。