2017-02-17 11 views
0

Я пытаюсь использовать JIntellitype слушать глобальные горячие клавиши, но я получаю эту ошибку:Не удалось загрузить JIntellitype.dll из локальной файловой системы или внутри JAR

Exception in thread "main" com.melloware.jintellitype.JIntellitypeException: Could not load JIntellitype.dll from local file system or from inside JAR at com.melloware.jintellitype.JIntellitype.(JIntellitype.java:114) at com.melloware.jintellitype.JIntellitype.getInstance(JIntellitype.java:177) at utils.HotKey.(HotKey.java:19) at ui.Main.Catch_Hotkeys(Main.java:78) at ui.Main.(Main.java:20) at ui.Main.main(Main.java:15) Caused by: java.io.IOException: FromJarToFileSystem could not load DLL: com/melloware/jintellitype/JIntellitype.dll at com.melloware.jintellitype.JIntellitype.fromJarToFs(JIntellitype.java:150) at com.melloware.jintellitype.JIntellitype.(JIntellitype.java:105) ... 5 more Caused by: java.lang.NullPointerException at com.melloware.jintellitype.JIntellitype.fromJarToFs(JIntellitype.java:146) ... 6 more

я загрузил файл банку, и я также указала на папку, где 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

Ваша проблема возникнет из-за проблемы с версией между версией ОС и версией JRE.

Вы должны проверить:

  1. ли соответствующий файл DLL устанавливается в системную папку операционной системы. Пакет JIntellitype имеет два файла DLL, один для 32-битных ОС, а другой для 64-битных ОС, у них разные имена.

  2. Проверьте версию своей Java-платформы в свойствах проектов. Вы можете попробовать изменить платформу Java, если существует несколько типов JDK. Убедитесь, что для 64-битной или 32-разрядной версии.

Удачи!

+0

Кроме того, в случае с номером 1 вы должны изменить имя файла dll так же, как «JIntellitype.dll», даже если выбрать один из них. –

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 (единственное исключение, вызванное библиотекой) и предупредить пользователей (через диалоговое окно), что горячая клавиша не удалось зарегистрировать. Вы должны дать им возможность продолжить работу без них или перезагрузить компьютер и повторить попытку.

Поверьте мне .... если это не постоянная проблема (это означает, что вы настроили ее неправильно), это ваша лучшая альтернатива. Время от времени это случается случайным образом.