2017-02-17 12 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

私もjarファイルおよびIをロードしています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

OSバージョンとJREバージョンの間に問題があるため、問題が発生します。あなたがチェックする必要があります

:適切なDLLファイルがお使いのOSのシステムフォルダにインストールされているかどうか

  1. 。 JIntellitypeパッケージには、32ビットOS用と64ビットOS用の2つのdllファイルがあり、名前が異なります。

  2. プロジェクトのプロパティでJavaプラットフォームのバージョンを確認してください。 複数のタイプのJDKがある場合は、Javaプラットフォームの変更を試みることができます。 64ビット版と32ビット版のどちらが正しいかを確認してください。

幸運を!

+0

また、数字1の場合、どちらを選択しても、 "JIntellitype.dll"のように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例外(ライブラリによってスローされた唯一の例外)をキャッチし、ホットキーが登録に失敗したことを(ダイアログウィンドウ経由で)ユーザーに警告する必要があります。それらなしで続行するか、コンピュータを再起動してやり直すかを選択する必要があります。

これは一定の問題(間違って設定したことを意味する)でない限り、あなたの最良の選択肢です。これは時折ランダムに発生します。

関連する問題