2016-07-21 30 views
0

私は現在、Eclipseで意図したとおりに動作する簡単なGUIを書いています。私はそれをエクスポートすることを望んでいたので、友人(EclipseとJavaライブラリをインストールする必要はありません)と共有できます。 Eclipseが提供する3つのライブラリ処理メソッドを試してみましたが、どれも動作しませんでした。私は少しオンラインを読んで、マニフェストファイルについて何かを見ましたが、それをどうすればいいか分かりませんでした。それは助けるつもりですか? This is what happens when I run it in the cmd実行可能なjarをエクスポートして開き、UnsatisfiedLinkErrorを返す

ここで、.dllファイルに付属するフォルダを配置しました。 enter image description hereenter image description here これが結果です。私は何か間違っているのですか? enter image description here

答えて

1

最初のスクリーンショットのエラーメッセージで示されているように、ここで欠けているのはネイティブライブラリです。オペレーティングシステム固有のネイティブコードに書き込まれ、コンパイルされたソフトウェアライブラリです。あなたがする必要があることは、ソフトウェアが動作するオペレーティングシステムに固有のライブラリを提供することです。 32または64ビットWindows用のDLL。マニフェストは、それらのライブラリを含む機能を提供しません。

プログラムは、Windows上で実行されると、Javaは次の場所にネイティブライブラリを検索します:

  • カレントディレクトリ
  • PATH環境変数内のディレクトリ
  • Javaでのディレクトリ。 library.path(指定されている場合)

すべてのファイルを1つのディレクトリに入れるのが最も簡単です。これを行うと、あなたは今と同じようにプログラムを実行できるはずです。

java.library.pathオプションは、あなたがあなたのPATH上でプログラムを実行していないしたものに別のディレクトリにネイティブライブラリファイルを入れたい場合に必要だけです。この場合にのみ、java.library.pathを追加する必要があります。 javaの後に-Djava.library.path=c:\path\to\your\libを追加してください。また、相対パスを使用することもできます。コマンドを実行したときのディレクトリに関連するパス。

他の依存関係がありますが、JavaライブラリLeapJava.jarで、後でエラーメッセージが表示されます。 -jarのjarを実行すると、単一のjarがある場合にのみ動作しますが、複数のプログラム(独自のプログラム+依存関係)があるため、代わりに-classpath(または省略形の-cp)引数を使用し、あなたのメインクラス。クラスパス引数はクラスパスのセミコロンで区切られたリストですが、メインクラスはpublic static void mainメソッドを含むクラスです(例: your.package.name.YourMainClass。だからあなたのui.jarががC:\Users\Ian\Desktop\Leap Data UIにまだある、あなたはそのディレクトリに移動して実行することができるはずと仮定:

java -cp UI.jar;UI_lib\LeapJava.jar -Djava.library.path="UI_lib\x64" your.package.name.YourMainClass 
+0

だから私は私のJavaコードでこれを追加できますか?私はパスを明示的に設定する方法についてはあまりよく分かりません。これが明示的に行われれば、私の友人もそれをやる必要があるということですか?申し訳ありませんが、私はかなり新しくコーディングしています。 –

+0

あなたがする必要があるいくつかのことがあります。まず、LeapJavaに付属の関連する.dllファイルを見つける必要があります。それから、あなたのプログラムを実行する人にそれらのファイルを与える必要があります - それらは別々のファイルとして残され、あなたのjarファイルに含める必要はありません。最後に、あなたやあなたの友人がプログラムを実行するときにライブラリのパスを含める必要があります。あなたの例では 'java -jar UI.jar'を実行しました。これは' -Djava.libraryをインクルードするために変更する必要があります。path = c:\ path \〜\ lib \ folder'に移動します。 – Taufiq

+0

元の投稿を編集して、私がやっていると思われる結果を表示しました。私は間違って何をしていますか? –

関連する問題