5

RHEL6 (6.4) で R と Tomcat をセットアップしようとしています。

R をインストールして実行できます。Tomcat 7 をインストールしており、ファイル ファイルをホストできます。アプリケーションを WAR ファイルとしてパッケージ化し、tomcat を使用してデプロイしました。アプリケーションは、R コンポーネントを使用するまで、すべての面で正常に動作します。

これは、catalina.out に見られるように、次のエラーでクラッシュする場所です。

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

java.lang.UnsatisfiedLinkError: /usr/local/lib64/R-2.15.3/library/rJava/jri/libj
ri.so: libR.so: cannot open shared object file: Too many levels of symbolic link
s
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1750)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1675)
at java.lang.Runtime.loadLibrary0(Runtime.java:840)
at java.lang.System.loadLibrary(System.java:1047)
at org.rosuda.JRI.Rengine.<clinit>(Rengine.java:19)

R の下に rJava がインストールされています: install.packages("rJava") 正常にインストールされ、R のライブラリ フォルダー内に rJava があります。

/etc/profile で次のように定義しました。

export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre
export R_HOME=/usr/local/lib64/R-2.15.3
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:$R_HOME/bin
export PATH
export LD_LIBRARY_PATH=$R_HOME/lib/libR.so,$JAVA_HOME/lib/amd64/server/libjvm.so

私の理解では、サーバー上のすべてのユーザーに対してグローバルに JAVA_HOME、R_HOME、PATH、および LD_LIBRARY_PATH を設定する必要があります。Tomcat がルートの下で実行されていることはわかっており、ルートが「 」、「 」、「 」、「 」を介して上記の設定どおりに上記のすべてのパスを確認できたことecho $JAVA_HOMEecho $R_HOME確認echo $LD_LIBRARY_PATHできecho $PATHます

したがって、これらの .so ファイルを開くことができないと不平を言っている理由がわかりません。

また、クラッシュすると Tomcat がシャットダウンします。

ありがとう!

4

2 に答える 2

3

TomcatでRライブラリを使用していたときに同じ問題が発生しました。R_HOME が見つかりませんでした。

解決策は、Tomcat が独自の変数を設定するため、Tomcat のパスを設定するファイルを更新することです。ファイルは「yourPathTomcat/tomcat/bin/setclasspath.sh」で、それを開いて最後に「export R_HOME=yourPathToR」を追加します (Linux 環境で追加したものと同じように、例: export R_HOME=/usr/lib/R)。 . その後、アプリを実行すると動作します。それが誰かを助けることを願っています。:D

于 2015-08-28T10:03:52.923 に答える
2

Java から R を使用するには、JRI をインストールする必要があります。幸いなことに、JRI は現在 rJava の一部であり、rJava とともにインストールされています。

JRI には、rJava とともにすでにインストールされている独自のネイティブ共有ライブラリが必要です。rJava とともにインストールされた JRI を見つけるには、次を使用します。

    system.file("jri",package="rJava")

R [コマンドライン] の中から。上記のコマンドはパスを提供します。あなたは見つけることができるでしょう

libjri.so

これは、JRI が探している共有ライブラリです。JAVA_OPTS を介して上記で取得したこのパスを次のように指定できます。

    -Djava.library.path=${path-retrieved-from-R}

これは、Tomcat の初期化時に JVM 設定に渡されます。

複数のライブラリを使用している場合は、それに応じてライブラリ パスの java オプションをグループ化してください。

于 2013-04-05T08:51:01.727 に答える