Eclipseの起動で「Java.library.path」にネイティブライブラリを追加する方法(それを無効にする代わりに)

StackOverflow https://stackoverflow.com/questions/661320

質問

追加する必要があるネイティブライブラリを手に入れました java.library.path. 。 JVM引数で -djava.library.path = path ... 必要に応じてパスを設定できます。

私の問題は、私の他のライブラリ(Pentaho Reporting)がデフォルトのjava.library.path(システムディレクトリなどを含む)に基づいてフォントを検索し、手動設定がデフォルトのパスをオーバーライドすることです。

だから:どうすればよい 追加 デフォルトのjava.library.pathへのパスエントリをオーバーライドする代わりに(-djava.library.pathで行われているようです)? (デフォルトのパスを手で追加したくありませんが、展開のためには良くありません)

編集:詳細が欠けてすみません。私はEclipseで働いています。 (展開はJNLPで行われ、そこで使用できます ナチベリブ資力)

役に立ちましたか?

解決

この問題を忘れていました...私は実際にEclipseで尋ねていました。もともとそれを述べていないことを申し訳ありません。そして、答えは単純すぎるようです(少なくとも3.5では、おそらく古いバージョンでも):

Javaは構成を実行する引数:VM引数:

-Djava.library.path="${workspace_loc:project}\lib;${env_var:PATH}"

見積マークを忘れてはなりません。そうでない場合は、パスのスペースに問題があります。

他のヒント

干渉せずにネイティブライブラリを追加したい場合 java.library.path Eclipseの開発時に(絶対パスを含め、起動構成にパラメーターを追加する必要がないため)、各瓶のネイティブライブラリの場所へのパスを供給できます。 Javaビルドパス 下のダイアログ ネイティブライブラリの場所. 。ネイティブライブラリファイル名は、JARファイル名に対応する必要があることに注意してください。これも参照してください 詳細な説明.

SWTは、必要なネイティブDLLを瓶に入れます。たとえば、「org.eclipse.swt.win32.win32.x86_3.4.1.v3449c.jar」を検索します。

DLLは瓶の根元にある必要があり、jarに署名する必要があり、dllはVMがそれらを拾うためにMeta-inf/manifest.mfにチェックサムとともに表示されなければなりません。

Windowsで、このように:

-djava.library.path = "c:/mylibpath;%path%"

%パス%は古い-djava.library.pathです

https://bugs.eclipse.org/bugs/show_bug.cgi?id=102239 Eclipseのランチャーには、少なくともJunoをリリースするための代替メカニズムが実装されていないと述べています。

したがって、デフォルトの設定を事前に知ることなくEclipseを起動する際に、java.library.pathに別のライブラリフォルダーを追加または準備することは(ほとんど)不可能です。

私はほとんど書いていますが、Eclipse Startupを許可し、java.library.pathのコンテンツを捨てて、1つのコマンドでEclipseを停止できるはずです。ダンプは解析され、日食を起動するための入力としてとられます。

#!/bin/bash
# get default value of java.library.path (somehow)
default_lib_path=$( start_dump_stop_eclipse_somehow )  

# now launch Eclipse
eclipse --launcher.appendVmargs \
         -vmargs \
         -Djava.library.path="/my/native/lib/folder:${default_lib_path}"

電話してこれを回避できますか system.load() あなたのネイティブライブラリをロードするプログラムで?この方法(とは異なります System.LoadLibrary())絶対パスを指定できます。

UNIXシステムでは、LD_LIBRARY_PATH環境変数に追加できます。 Windowsでは、JVMはシステムプロパティjava.library.pathをパスに自動的に設定します。したがって、DLLがあなたのパスにある場合、あなたは設定されます。

ウィンドウ - >設定 - > java->インストールされたjres。次に、現在のJRE(JDK)を選択し、[編集]をクリックします。デフォルトのVM引数を入力:-djava.library.path =/usr/local/xuggler/lib。終わり!

上記のコメントの1つでRob Elsnerが提供するソリューションは完全に機能します(OSX 10.9、Eclipse Kepler)。 「:」で区切られたパスに追加のパスを追加する必要があります。

$ {system_property:java.library.path}を使用することもできます。

The native library file name has to correspond to the Jar file name. This is very very important. Please make sure that jar name and dll name are same. Also,please see the post from Fabian Steeg My download for jawin was containing different names for dll and jar. It was jawin.jar and jawind.dll, note extra 'd' in dll file name. I simply renamed it to jawin.dll and set it as a native library in eclipse as mentioned in post "http://www.eclipsezone.com/eclipse/forums/t49342.html"

For some reason I couldn't get multiple folders to work (well it did for a while but as soon as I needed more dlls and added more folders, none with white spaces in the path). I then copied all needed dlls to one folder and had that as my java.library.path and it worked. I don't have an explanation - if anyone does, it would be great.

Many of the existing answers assume you want to set this for a particular project, but I needed to set it for Eclipse itself in order to support integrated authentication for the SQL Server JDBC driver.

To do this, I followed these instructions for launching Eclipse from the Java commandline instead of its normal launcher. Then I just modified that script to add my -Djava.library.path argument to the Java commandline.

On Windows, I have found that the important thing is to start Eclipse from the command line rather than from the Start Menu or a shortcut, provided that the native DLL is in a directory in your PATH. Apparently, this ensures that the proper directory is on the path.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top