2012-01-28 18 views
4

にDLLのインポート、私は "java.library.pathに" path値のは、EclipseのJavaプロジェクトにDLLをインポートするにはEclipseのJavaプロジェクト

String path = System.getProperty("java.library.path"); 
System.out.println(path); 

一つをチェックしC:/Windows/System32に等しかったです。したがって、myAPI.dllC:/Windows/System32に保存しました。

System.loadLibrary("myAPI.dll"); 

、エラーメッセージました:その後、私は System.loadLibraryと呼ばところで

Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: Expecting an absolute path of the library: myAPI.dll 
    at java.lang.Runtime.load0(Unknown Source) 
    at java.lang.System.load(Unknown Source) 

を、私はpathで言及されたさまざまな他のディレクトリに私のDLLファイルを入れてみました。しかし、毎回私は同じエラーメッセージを受け取りました。この問題を解決するには?

+2

を、あなたは 'system32'を意味していますか? – cha0site

+0

http://stackoverflow.com/questions/4691095/java-loading-dlls-by-a-relative-path-and-hide-them-inside-a-jar –

+1

ソリューションが見つかりました:System.loadLibrary( "myAPI "); System.loadLibrary( "myAPI.dll")の代わりに。 –

答えて

5

ライブラリの最後に ".dll"を入れないでください。これはWindows固有の拡張であり、あなたの呼び出しは他の拡張機能を持つ他のシステムでも機能するため、拡張機能をオンにするのは間違いです。 「myAPI」だけをロードし、それが正しい名前であり、他のものが宣伝されているとすれば、それは機能します。

1

1つのオプションは、日食システムライブラリで使用されるあなたの/ JRE/binにそのDLLを維持しようとすることであり、実行時にdllファイルを設定することができた、/ JRE/binに

にDLLを配置することによって、それは最も簡単な方法です私は見つけることができた。 。

./prod/bin/myAPI.dll 

を、あなたがプログラム/ユニットを実行したい:DLLがすなわちプロジェクトフォルダ(プロジェクトの例の部分)である場合me.Hopefullyのためのこの作品は、

+0

これは私のために働いていません。他のアイデア? – ralphgabb

0

:)お手伝いを致しますあなたのプログラムを実行する実行時環境を設定することができます。 "Preferences/Java/Installed JREs"に移動し、希望のJREまたはJDKを選択します(注:ホストシステムは64ビットシステムですが、32ビットDLLをロードするには32ビットJREを使用する必要があります)。ボックスで、「デフォルトのVM引数は」あなたはこれがシステムパスの前のあなたのdllフォルダ「PROD/binに」を追加

-Djava.library.path="./prod/bin;${env_var:PATH}" 

入力します(それが唯一選ばれたの環境のために、恒久的ではないですが、気にしないでくださいJRE)。

あなたがシステムパスが更新されたとDLLをロードすることができることを確認することができ、次のコードを実行することにより:

 String path = System.getProperty("java.library.path"); 
     System.out.println(path); 
     System.loadLibrary("myAPI"); 
関連する問題