我正在尝试使用JIntellitype来收听全局热键,但是我收到了这个错误:
线程“main”中的异常 com.melloware.jintellitype.JIntellitypeException:无法加载 来自本地文件系统或来自JAR内部的JIntellitype.dll com.melloware.jintellitype.JIntellitype。(JIntellitype.java:114) 在 com.melloware.jintellitype.JIntellitype.getInstance(JIntellitype.java:177) at utils.HotKey。(HotKey.java:19)at ui.Main.Catch_Hotkeys(Main.java:78)在ui.Main。(Main.java:20) at ui.Main.main(Main.java:15)引起:java.io.IOException: FromJarToFileSystem无法加载DLL: com / melloware / jintellitype / JIntellitype.dll at com.melloware.jintellitype.JIntellitype.fromJarToFs(JIntellitype.java:150) 在 com.melloware.jintellitype.JIntellitype。(JIntellitype.java:105) ... 5更多引起:java.lang.NullPointerException at com.melloware.jintellitype.JIntellitype.fromJarToFs(JIntellitype.java:146) ......还有6个
我已经加载了jar文件,并且还通过Referenced Libraries指向了dll所在的文件夹。
以下是我尝试运行的代码:
import com.melloware.jintellitype.HotkeyListener;
import com.melloware.jintellitype.IntellitypeListener;
import com.melloware.jintellitype.JIntellitype;
public class HotKey extends Thread implements HotkeyListener, IntellitypeListener {
private final int CTRL_C_SHIFT = 10;
public HotKey()
{
JIntellitype.getInstance().unregisterHotKey(CTRL_C_SHIFT);
JIntellitype.getInstance().registerHotKey(CTRL_C_SHIFT, JIntellitype.MOD_CONTROL + (int)'C', JIntellitype.MOD_SHIFT);
if (!JIntellitype.isJIntellitypeSupported())
{
System.exit(1);
}
}
@Override
public void onIntellitype(int arg0)
{
}
@Override
public void onHotKey(int key)
{
if (key == CTRL_C_SHIFT)
{
System.out.println("smg");
}
}
}
知道如何解决这个问题吗?
答案 0 :(得分:0)
由于该操作系统版本与JRE版本之间存在版本问题,您的问题将会发生。
你应该检查:
是否在OS系统文件夹中安装了适当的dll文件。 JIntellity包有两个dll文件,一个用于32位操作系统,另一个用于64位操作系统,它们有不同的名称。
在项目属性中检查Java平台版本。 如果有多种类型的JDK,您可以尝试更改Java平台。 确保哪个适用于64位或32位版本。
祝你好运!
答案 1 :(得分:0)
我建议你做这样的事情:
try
{
JIntellitype.getInstance().unregisterHotKey(CTRL_C_SHIFT);
MyHotKeyListener hotKeyListener = new MyHotKeyListener();
hotKeyListener.addObserver(new MyEventListener());
JIntellitype.getInstance().addHotKeyListener(hotKeyListener);
JIntellitype.getInstance().registerHotKey(CTRL_C_SHIFT, JIntellitype.MOD_CONTROL + (int)'C', JIntellitype.MOD_SHIFT);
}
catch (JIntellitypeException je)
{
logger.warn("JIntellitype initialization failed.");
// DO WHATEVER (NOTIFY USERS?)
}
我可以指向其他线程,包括这个库的创建者自己否认库的问题。但是,像我这样的许多用户不时会遇到这类问题,而JIntellitype无法初始化,唯一的解决方案就是重启计算机。因此,您应该捕获JIntellitype异常(库引发的唯一异常)并警告用户(通过对话框窗口)热键无法注册。您应该让他们选择在没有它们的情况下继续,或重新启动计算机并再次尝试。
相信我....除非这是一个持续的问题(这意味着你错误地配置了它),它是你最好的选择。这将随时发生。