2012-01-11 26 views
8

eclipseからjavaプロジェクトをjar実行可能ファイルとしてエクスポートする際に問題があります。私のJavaプロジェクトは外部ライブラリ(jriと呼ばれる)を使用します。私はjri.jarファイルをエクスポートし、eclipseでそのネイティブ・ライブラリーのライブラリー・パスを設定しました。これはeclipseでの開発には最適です。私は、実行可能jarファイルとしてエクスポートする場合しかし、私は次のエラーを取得する:eclipseで余分なネイティブコードライブラリを使用してRunnable jarにエクスポート

Cannot find JRI native library! 
Please make sure that the JRI native library is in a directory listed in java.library.path. 

私は私のプロジェクトのjarファイルと同じディレクトリ内のlibというフォルダを配置しています。このlibフォルダにはjriのネイティブライブラリが含まれています。 jriのネイティブライブラリは、1つのファイルではなくフォルダ内にあります。これは私がEclipseで持っているのと同じ設定です。

私は日食に私のプロジェクトをエクスポートしています方法は

Export... 
Java > Runnable JAR file 
Copy required libraries into a sub folder next to the generated Jar 
Finish 

ですそして、私のフォルダは私のproject.jarのMANIFEST.MFがあるこの

folder project 
    project.jar 
    project_lib 
    jri.jar 
    jri native library folder 

のように構成されています

Manifest-Version: 1.0 
Class-Path: . project_lib/jri.jar 
Main-Class: index 

私が達成したいのは、他の人にproject.jarなどの必要なものを含むフォルダを与えることですそれ以外のものをインストールする必要はありません。 本当にありがとうございました

+0

あなたはそれを使用して嫌いなら、それについて責任を負いません。何かが日食に間違っていたら、それはあなたのせいではないかもしれません。 – ozhan

+1

同様の答えを確認してください。それはmigthのヘルプです。 http://stackoverflow.com/questions/2702132/how-can-i-include-platform-specific-native-libraries-in-the-jar-file-using-ecli – ozhan

+2

マニフェストにproject_lib/jri_native_library_folderを追加してみましたか.mf classpath? – KJP

答えて

8

はそのような何かを含むスクリプトを追加します。あなたは私がすべて上記同様の問題

Could not extract native JNI library. 

を持っていた知っている

1

あなたはあなたのjarファイル内のライブラリにを置くことができます。

Export...

Java > Runnable JAR file

Package required libraries into generated Jar

Finish

私はいつもこの方法をエクスポートします。 あなたのケースでうまくいくかどうかわかりませんが、試してみる価値があります。


編集:私の推測では、これはLD_LIBRARY_PATHないcorrecとは何かを持っているということです

は、これらのリンクを参照してください。が設定されました。または、探しているファイルがリストにあるパスにない。

+0

私はそれを試みましたが、それは動作しません、外部パッケージのネイティブライブラリはフォルダにあり、java.library.pathにアクセスする必要があることを忘れないでください。 –

+1

@ジュリオ・ディアス:編集を参照してください、私はあなたを助けることができます。私の場合は – falsarella

+1

が働いた。 –

3

これは実装が比較的難しいです。私が見てきた解決策には、JARのネイティブライブラリをOSの一時ディレクトリに展開してからロードする方法があります。私はそれのための統合された解決策に行くだろう。 One JarJava Class Loaderをサポートし、2ページ目に同様のツールへのリンクがあります。私はそのようにいくつかのJavaプロジェクトをエクスポート

#!/bin/bash 
java -Djava.library.path=project_lib/native/ -jar project_lib/jri.jar 

+0

私の知る限り、JavaはJNIライブラリ(.dll、.soなど)をJARファイルから読み込むことはできません。あなたが言及するソリューションは、Javaがそれらをロードできるように、実行時に関連するファイルを抽出します。 – ChrisJ

0

は私を助けることができない提案しています。私は、次のコマンドを使用してのGradleデーモンを停止し、起動できませんでした:

gradle --stop 

私はGradleのデーモンはまだ私のプロセスでは停止しないことを見ました。だから私は私のプロセスでそれを殺すとすべてがうまくいくでしょう:)

関連する問題