native Library について

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
9 messages Options
Reply | Threaded
Open this post in threaded view
|

native Library について

I.Andoh
スライドショーの再生 <A style="FONT-FAMILY: Verdana; WHITE-SPACE: nowrap; COLOR: #444444; FONT-SIZE: 11px" href="http://g.msn.com/5meen_us/171?path=/photomail/{cd10cf74-0002-4148-96e4-b95aa52bdbe1}&amp;image=3ADD3AAE7C3F6842!163&amp;imagehi=3ADD3AAE7C3F6842!161&amp;CID=4241610945136126018">スライドショーの再生 すべての写真を保存 すべての写真を保存 これらのすべての写真を一括で保存しますか? 詳細情報
オンラインの画像は 30 日間有効です
 
javaとRを接続しようとしています。
 
RのライブルアリrJava¥jri.jarをnetbeansのツールのライブルアリーから
クラスライブルファイルに追加しProjectのプロパティーでライブルアリーを追加しました。
実行すると次のエラーが出ます。
 
Cannot find JRI native library!
Please make sure that the JRI native library is in a directory listed in java.library.path.
 
java.lang.UnsatisfiedLinkError: C:\R\R-2.10.1\library\rJava\jri\jri.dll: Can't find dependent libraries
        at java.lang.ClassLoader$NativeLibrary.load(Native Method)
        at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1778)
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1703)
        at java.lang.Runtime.loadLibrary0(Runtime.java:823)
        at java.lang.System.loadLibrary(System.java:1030)
        at org.rosuda.JRI.Rengine.<clinit>(Rengine.java:19)
        at rtest2.rtest2.main(rtest2.java:83)
このような質問はnetbeansの掲示板にも出ていますが
適切な回答がありません。
 
Eclipseではnative libraryへのリンクが指定できます。
 
pathをどのように設定するのかがわかりません。
 
外部jarを利用するときに上のようなエラーメッセージが出るようです。
 
どう対処すればよいのでしょうか。
 
 
 
 
 
 
Reply | Threaded
Open this post in threaded view
|

Re: native Library について

Masaki
I.Andoh さん、こんにちは。片貝と申します。

rJava は使ったことがなかったのですが、以下のページを参考にさせて
いただいて実行することができました。

  http://d.hatena.ne.jp/hamadakoichi/20100111/1263227076

ここと違うのは1つは、NetBeans の Java プロジェクトでは
環境変数の設定はできないので、以下の環境変数は Windows の
コントロールパネルのシステムで設定しました。

  R_HOME: C:\R\R-2.10.1\
  Path: C:\R\R-2.10.1\bin (ここはパスに追加)
  R_DOC_DIR: C:\R\R-2.10.1\doc
  R_INCLUDE_DIR: C:\R\R-2.10.1\include
  R_SHARE_DIR: C:\R\R-2.10.1\share

もう一つは、java.library.path を設定したことです。これは
NetBeans の実行時の VM オプションとして設定できます。プロジェクトの
プロパティーダイアログの「実行」カテゴリの「VM オプション」に
以下を入力します。

  -Djava.library.path="C:/R/R-2.10.1/library/rJava/jri/"

I.Andoh さんの場合は、

> java.lang.UnsatisfiedLinkError: C:\R\R-2.10.1\library\rJava\jri\jri.dll:
> Can't find dependent libraries

このエラーが出ているということはおそらく "jri.dll" は見つかっている
けれども必要な .dll が探せてないようです。これは上の環境変数を
設定すれば解決すると思います。

間違いなどありましたら指摘して下さい。よろしくお願いいたします。

片貝

03/17/10 17:46, I.Andoh wrote:

>  
> javaとRを接続しようとしています。
>  
> RのライブルアリrJava¥jri.jarをnetbeansのツールのライブルアリーから
> クラスライブルファイルに追加しProjectのプロパティーでライブルア
> リーを追加しました。
> 実行すると次のエラーが出ます。
>  
> Cannot find JRI native library!
> Please make sure that the JRI native library is in a directory listed in
> java.library.path.
>  
> java.lang.UnsatisfiedLinkError: C:\R\R-2.10.1\library\rJava\jri\jri.dll:
> Can't find dependent libraries
>         at java.lang.ClassLoader$NativeLibrary.load(Native Method)
>         at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1778)
>         at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1703)
>         at java.lang.Runtime.loadLibrary0(Runtime.java:823)
>         at java.lang.System.loadLibrary(System.java:1030)
>         at org.rosuda.JRI.Rengine.<clinit>(Rengine.java:19)
>         at rtest2.rtest2.main(rtest2.java:83)
> このような質問はnetbeansの掲示板にも出ていますが
> 適切な回答がありません。
>  
> Eclipseではnative libraryへのリンクが指定できます。
>  
> pathをどのように設定するのかがわかりません。
>  
> 外部jarを利用するときに上のようなエラーメッセージが出るようです。
>  
> どう対処すればよいのでしょうか。


--
Masaki Katakai
Sun Microsystems K.K.
http://blogs.sun.com/katakai
Reply | Threaded
Open this post in threaded view
|

rJava について

I.Andoh
片貝様

2年程前同じ質問しました。

教えていただいた設定をしたのですが
次のメッセじジがでて動作しません。
Cannot find JRI native library!
Please make sure that the JRI native library is in a directory listed in
java.library.path.

java.lang.UnsatisfiedLinkError: no jri in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1709)
    at java.lang.Runtime.loadLibrary0(Runtime.java:823)
    at java.lang.System.loadLibrary(System.java:1030)
    at org.rosuda.JRI.Rengine.<clinit>(Rengine.java:19)
    at rtest.Rtest.main(Rtest.java:17)
Java Result: 1

ソースは以下のものです。

package rtest;

/**
*
* @author owner
*/
import org.rosuda.JRI.REXP;
import org.rosuda.JRI.Rengine;
public class Rtest
{
    public static void main(String[] args)
    {
        Rengine engine = new Rengine(new String[]{"--no-save"}, false,
null);
        engine.assign("a", new int[]{36});
        REXP result = engine.eval("sqrt(a)");
        System.out.println(result.asDouble());
        engine.end();
    }
}

いろいろ試したのですがうまくゆきません。

コンパイルエラーはでなせんし、jarファイルも作成できます。

NBは7.1です。

なぜパスが通らないのでしょうか。
VMオプションでパス設定をしています。
-Djava.library.path="c:/R/R-2.14.1/library/rJava/jri/"

よろしくお願いします。

                    安東

Reply | Threaded
Open this post in threaded view
|

Re: rJava について

katakai
安東さん、こんにちは。

http://netbeans.org/projects/www/lists/nbdiscuss_ja/archive/2010-03/message/6

のことですね。このときは動いたのでしょうか?

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

前回とエラーが違いますね。前回は .dll は見つかっていたようですが今回は
それが見つかっていないようです。-Djava.library.path の指定が間違えて
いるか、その場所に .dll がないのだと思います。

> -Djava.library.path="c:/R/R-2.14.1/library/rJava/jri/"

の下に .dll はありますか?

今やってみましたが私の環境だと NetBeans 7.1 でも動きました。

環境変数
 PATH に ;C:\R\R-2.14.1\bin\x64\;C:\R\R-2.14.1\library\rJava\jri\x64\ を追加

プロジェクトのプロパティーの「実行」で「VM オプション」に以下を指定
  -Djava.library.path="C:\R\R-2.14.1\library\rJava\jri\x64"

私の場合は x64 を使っています。必要でしたら私の NetBeans プロジェクトを
zip でお送りします。

片貝


(2012/01/24 15:07), I.Andoh wrote:

> 片貝様
>
> 2年程前同じ質問しました。
>
> 教えていただいた設定をしたのですが
> 次のメッセじジがでて動作しません。
> Cannot find JRI native library!
> Please make sure that the JRI native library is in a directory listed in java.library.path.
>
> java.lang.UnsatisfiedLinkError: no jri in java.library.path
> at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1709)
> at java.lang.Runtime.loadLibrary0(Runtime.java:823)
> at java.lang.System.loadLibrary(System.java:1030)
> at org.rosuda.JRI.Rengine.<clinit>(Rengine.java:19)
> at rtest.Rtest.main(Rtest.java:17)
> Java Result: 1
>
> ソースは以下のものです。
>
> package rtest;
>
> /**
> *
> * @author owner
> */
> import org.rosuda.JRI.REXP;
> import org.rosuda.JRI.Rengine;
> public class Rtest
> {
> public static void main(String[] args)
> {
> Rengine engine = new Rengine(new String[]{"--no-save"}, false, null);
> engine.assign("a", new int[]{36});
> REXP result = engine.eval("sqrt(a)");
> System.out.println(result.asDouble());
> engine.end();
> }
> }
>
> いろいろ試したのですがうまくゆきません。
>
> コンパイルエラーはでなせんし、jarファイルも作成できます。
>
> NBは7.1です。
>
> なぜパスが通らないのでしょうか。
> VMオプションでパス設定をしています。
> -Djava.library.path="c:/R/R-2.14.1/library/rJava/jri/"
>
> よろしくお願いします。
>
>                     安東

Reply | Threaded
Open this post in threaded view
|

Re: rJava について

I.Andoh
片貝様

早速の返信ありがとうございました。
環境変数にC:\R\R-2.14.1\library\rJava\jri\を追加しましたが
動作しませんでした。
コンパイルは正しいようですが、実行のとき
パスが通らないようです。dllは見つけているようです。

ファイルは指定のディレクトリーにあります。
nbでパスを確かめる方法があるのでしょうか。

DOS窓で確かめますとパスは通ていて    JRI.jar jri.dllへ
アクセスできます。

VMオプションでの指定がうまくリンクを形成しないように
みえます。

もしzipをお送り頂けたら確かめて見たいと思っています。

尚OSはWinndows7です。

                  安東

-----Original Message-----
From: Masaki Katakai
Sent: Tuesday, January 24, 2012 4:24 PM
To: [hidden email]
Subject: [nbdiscuss_ja] Re: rJava について

安東さん、こんにちは。

http://netbeans.org/projects/www/lists/nbdiscuss_ja/archive/2010-03/message/6

のことですね。このときは動いたのでしょうか?

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

前回とエラーが違いますね。前回は .dll は見つかっていたようですが今回は
それが見つかっていないようです。-Djava.library.path の指定が間違えて
いるか、その場所に .dll がないのだと思います。

> -Djava.library.path="c:/R/R-2.14.1/library/rJava/jri/"

の下に .dll はありますか?

今やってみましたが私の環境だと NetBeans 7.1 でも動きました。

環境変数
PATH に ;C:\R\R-2.14.1\bin\x64\;C:\R\R-2.14.1\library\rJava\jri\x64\ を追加

プロジェクトのプロパティーの「実行」で「VM オプション」に以下を指定
  -Djava.library.path="C:\R\R-2.14.1\library\rJava\jri\x64"

私の場合は x64 を使っています。必要でしたら私の NetBeans プロジェクトを
zip でお送りします。

片貝


(2012/01/24 15:07), I.Andoh wrote:

> 片貝様
>
> 2年程前同じ質問しました。
>
> 教えていただいた設定をしたのですが
> 次のメッセじジがでて動作しません。
> Cannot find JRI native library!
> Please make sure that the JRI native library is in a directory listed in
> java.library.path.
>
> java.lang.UnsatisfiedLinkError: no jri in java.library.path
> at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1709)
> at java.lang.Runtime.loadLibrary0(Runtime.java:823)
> at java.lang.System.loadLibrary(System.java:1030)
> at org.rosuda.JRI.Rengine.<clinit>(Rengine.java:19)
> at rtest.Rtest.main(Rtest.java:17)
> Java Result: 1
>
> ソースは以下のものです。
>
> package rtest;
>
> /**
> *
> * @author owner
> */
> import org.rosuda.JRI.REXP;
> import org.rosuda.JRI.Rengine;
> public class Rtest
> {
> public static void main(String[] args)
> {
> Rengine engine = new Rengine(new String[]{"--no-save"}, false, null);
> engine.assign("a", new int[]{36});
> REXP result = engine.eval("sqrt(a)");
> System.out.println(result.asDouble());
> engine.end();
> }
> }
>
> いろいろ試したのですがうまくゆきません。
>
> コンパイルエラーはでなせんし、jarファイルも作成できます。
>
> NBは7.1です。
>
> なぜパスが通らないのでしょうか。
> VMオプションでパス設定をしています。
> -Djava.library.path="c:/R/R-2.14.1/library/rJava/jri/"
>
> よろしくお願いします。
>
> 安東

Reply | Threaded
Open this post in threaded view
|

Re: rJava について

I.Andoh
In reply to this post by katakai
片貝様

先のメールに追加です。

dosコマンドで次のようになりました。

c:\>java -jar c:\R\R-2.14.1\library\rJava\jri\JRI.jar rtest
Failed to load Main-Class manifest attribute from
c:\R\R-2.14.1\library\rJava\jri\JRI.jar

安東

-----Original Message-----
From: Masaki Katakai
Sent: Tuesday, January 24, 2012 4:24 PM
To: [hidden email]
Subject: [nbdiscuss_ja] Re: rJava について

安東さん、こんにちは。

http://netbeans.org/projects/www/lists/nbdiscuss_ja/archive/2010-03/message/6

のことですね。このときは動いたのでしょうか?

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

前回とエラーが違いますね。前回は .dll は見つかっていたようですが今回は
それが見つかっていないようです。-Djava.library.path の指定が間違えて
いるか、その場所に .dll がないのだと思います。

> -Djava.library.path="c:/R/R-2.14.1/library/rJava/jri/"

の下に .dll はありますか?

今やってみましたが私の環境だと NetBeans 7.1 でも動きました。

環境変数
PATH に ;C:\R\R-2.14.1\bin\x64\;C:\R\R-2.14.1\library\rJava\jri\x64\ を追加

プロジェクトのプロパティーの「実行」で「VM オプション」に以下を指定
  -Djava.library.path="C:\R\R-2.14.1\library\rJava\jri\x64"

私の場合は x64 を使っています。必要でしたら私の NetBeans プロジェクトを
zip でお送りします。

片貝


(2012/01/24 15:07), I.Andoh wrote:

> 片貝様
>
> 2年程前同じ質問しました。
>
> 教えていただいた設定をしたのですが
> 次のメッセじジがでて動作しません。
> Cannot find JRI native library!
> Please make sure that the JRI native library is in a directory listed in
> java.library.path.
>
> java.lang.UnsatisfiedLinkError: no jri in java.library.path
> at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1709)
> at java.lang.Runtime.loadLibrary0(Runtime.java:823)
> at java.lang.System.loadLibrary(System.java:1030)
> at org.rosuda.JRI.Rengine.<clinit>(Rengine.java:19)
> at rtest.Rtest.main(Rtest.java:17)
> Java Result: 1
>
> ソースは以下のものです。
>
> package rtest;
>
> /**
> *
> * @author owner
> */
> import org.rosuda.JRI.REXP;
> import org.rosuda.JRI.Rengine;
> public class Rtest
> {
> public static void main(String[] args)
> {
> Rengine engine = new Rengine(new String[]{"--no-save"}, false, null);
> engine.assign("a", new int[]{36});
> REXP result = engine.eval("sqrt(a)");
> System.out.println(result.asDouble());
> engine.end();
> }
> }
>
> いろいろ試したのですがうまくゆきません。
>
> コンパイルエラーはでなせんし、jarファイルも作成できます。
>
> NBは7.1です。
>
> なぜパスが通らないのでしょうか。
> VMオプションでパス設定をしています。
> -Djava.library.path="c:/R/R-2.14.1/library/rJava/jri/"
>
> よろしくお願いします。
>
> 安東

Reply | Threaded
Open this post in threaded view
|

Re: rJava について

katakai
安東さん、

> c:\>java -jar c:\R\R-2.14.1\library\rJava\jri\JRI.jar rtest
> Failed to load Main-Class manifest attribute from
> c:\R\R-2.14.1\library\rJava\jri\JRI.jar

JRI.jar には main() がないのでこの結果は正しいと思います。


NetBeans で上でプロジェクトの構築を行うと「出力」ウィンドウに
このようなメッセージが出てくると思います。
...
Building jar: C:\Users\demo\Documents\NetBeansProjects\RSample01\dist\RSample01.jar
To run this application from the command line without Ant, try:
java -jar "C:\Users\demo\Documents\NetBeansProjects\RSample01\dist\RSample01.jar"
jar:
構築成功 (合計時間: 0 秒)

コマンドプロンプトで実行するには、ここの

java -jar "C:\Users\demo\Documents\NetBeansProjects\RSample01\dist\RSample01.jar"

を実行してみてください。

私の環境では正しく動きました。

片貝

(2012/01/25 8:41), I.Andoh wrote:

> 片貝様
>
> 先のメールに追加です。
>
> dosコマンドで次のようになりました。
>
> c:\>java -jar c:\R\R-2.14.1\library\rJava\jri\JRI.jar rtest
> Failed to load Main-Class manifest attribute from
> c:\R\R-2.14.1\library\rJava\jri\JRI.jar
>
> 安東
>
> -----Original Message----- From: Masaki Katakai
> Sent: Tuesday, January 24, 2012 4:24 PM
> To: [hidden email]
> Subject: [nbdiscuss_ja] Re: rJava について
>
> 安東さん、こんにちは。
>
> http://netbeans.org/projects/www/lists/nbdiscuss_ja/archive/2010-03/message/6
>
> のことですね。このときは動いたのでしょうか?
>
>> Cannot find JRI native library!
>> Please make sure that the JRI native library is in a directory listed in java.library.path.
>
> 前回とエラーが違いますね。前回は .dll は見つかっていたようですが今回は
> それが見つかっていないようです。-Djava.library.path の指定が間違えて
> いるか、その場所に .dll がないのだと思います。
>
>> -Djava.library.path="c:/R/R-2.14.1/library/rJava/jri/"
>
> の下に .dll はありますか?
>
> 今やってみましたが私の環境だと NetBeans 7.1 でも動きました。
>
> 環境変数
> PATH に ;C:\R\R-2.14.1\bin\x64\;C:\R\R-2.14.1\library\rJava\jri\x64\ を追加
>
> プロジェクトのプロパティーの「実行」で「VM オプション」に以下を指定
> -Djava.library.path="C:\R\R-2.14.1\library\rJava\jri\x64"
>
> 私の場合は x64 を使っています。必要でしたら私の NetBeans プロジェクトを
> zip でお送りします。
>
> 片貝
>
>
> (2012/01/24 15:07), I.Andoh wrote:
>> 片貝様
>>
>> 2年程前同じ質問しました。
>>
>> 教えていただいた設定をしたのですが
>> 次のメッセじジがでて動作しません。
>> Cannot find JRI native library!
>> Please make sure that the JRI native library is in a directory listed in java.library.path.
>>
>> java.lang.UnsatisfiedLinkError: no jri in java.library.path
>> at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1709)
>> at java.lang.Runtime.loadLibrary0(Runtime.java:823)
>> at java.lang.System.loadLibrary(System.java:1030)
>> at org.rosuda.JRI.Rengine.<clinit>(Rengine.java:19)
>> at rtest.Rtest.main(Rtest.java:17)
>> Java Result: 1
>>
>> ソースは以下のものです。
>>
>> package rtest;
>>
>> /**
>> *
>> * @author owner
>> */
>> import org.rosuda.JRI.REXP;
>> import org.rosuda.JRI.Rengine;
>> public class Rtest
>> {
>> public static void main(String[] args)
>> {
>> Rengine engine = new Rengine(new String[]{"--no-save"}, false, null);
>> engine.assign("a", new int[]{36});
>> REXP result = engine.eval("sqrt(a)");
>> System.out.println(result.asDouble());
>> engine.end();
>> }
>> }
>>
>> いろいろ試したのですがうまくゆきません。
>>
>> コンパイルエラーはでなせんし、jarファイルも作成できます。
>>
>> NBは7.1です。
>>
>> なぜパスが通らないのでしょうか。
>> VMオプションでパス設定をしています。
>> -Djava.library.path="c:/R/R-2.14.1/library/rJava/jri/"
>>
>> よろしくお願いします。
>>
>> 安東
>

Reply | Threaded
Open this post in threaded view
|

Re: rJava について

I.Andoh
In reply to this post by katakai
片貝様

いろいろ試みたのですがjava.library.pathへアクセスできません。

1 Windows XPでも同じでした。
2 コマンドラインではオプションにpathを設定するとアクセス禁止に
 なりました。(コンパイル時)
3 Javaのバージョンが関係しているようでいろいろ変えてみましたが
  駄目でした。現在はjdk1.6.0_30にしています。
4 環境変数にpathを設定してみましたがこれもだめ
5 R-2.14.1はアクセス禁止にはなっていません。

なにかやってみることがありませんでしょうか。

これは別件ですがprojectが赤で表示されることがありますが
これはどのような場合でしょうか。

                           安東

Reply | Threaded
Open this post in threaded view
|

不明のエラー

I.Andoh
In reply to this post by katakai
片貝様

Netbeans7.2.1で今までエラーが出なかったもので
次のエラーがでます。

run:
Wed Jan 23 13:31:30 2013
pid:3912 tid:3232 LOG(ERROR) .\ipc_win32.cpp(396) Create File failed:
Wed Jan 23 13:31:30 2013
pid:3912 tid:3232 LOG(ERROR) .\ipc_win32.cpp(396) Create File failed:
Wed Jan 23 13:31:30 2013
pid:3912 tid:3232 LOG(ERROR) .\ipc_win32.cpp(396) Create File failed:
Wed Jan 23 13:31:30 2013
pid:3912 tid:3232 LOG(ERROR) .\ipc_win32.cpp(396) Create File failed:
Wed Jan 23 13:32:12 2013
pid:3912 tid:3232 LOG(ERROR) .\ipc_win32.cpp(396) Create File failed:
Wed Jan 23 13:32:12 2013
pid:3912 tid:3232 LOG(ERROR) .\ipc_win32.cpp(396) Create File failed:

アプリは動いているようですがなぜこのようなメッセージが出るのでしょうか。

アプリケーションの途中で操作をしても出ます。
プログラムに問題があるのでしょうか。

修正する方法をご教授ください。

安東