无法从本地文件系统或JAR内部加载JIntellitype.dll

时间:2017-02-17 12:07:43

标签: java dll jintellitype

我正在尝试使用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");
         }
    }


}  

知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

由于该操作系统版本与JRE版本之间存在版本问题,您的问题将会发生。

你应该检查:

  1. 是否在OS系统文件夹中安装了适当的dll文件。 JIntellity包有两个dll文件,一个用于32位操作系统,另一个用于64位操作系统,它们有不同的名称。

  2. 在项目属性中检查Java平台版本。 如果有多种类型的JDK,您可以尝试更改Java平台。 确保哪个适用于64位或32位版本。

  3. 祝你好运!

答案 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异常(库引发的唯一异常)并警告用户(通过对话框窗口)热键无法注册。您应该让他们选择在没有它们的情况下继续,或重新启动计算机并再次尝试。

相信我....除非这是一个持续的问题(这意味着你错误地配置了它),它是你最好的选择。这将随时发生。

相关问题