6

R3.0.1 に rJava をインストールしているときに、「構成: エラー: 1 つ以上の JNI タイプが対応するネイティブ タイプと異なります」という問題に遭遇しました。

詳細なメッセージを以下に添付します。同様の問題を検索しましたが、私の問題は少しトリッキーで、システムライブラリへの書き込みアクセス権がないサーバーで作業しているため、提案された多くのソリューションが機能しないか、試すことができませんでした。

OS : Linux 2.6.18-348.6.1.el5 #1 SMP Tue May 21 15:44:27 EDT 2013 x86_64 x86_64 x86_64 GNU/Linux (「uname -a」と入力すると表示される情報。申し訳ありませんが、この情報をよく理解できませんでした)

R : R3.0.1、ソースをダウンロードし、ホーム ディレクトリに置き、ソースから R をビルドしました。

rJava : インストール中に「install.packages("rJava")」を実行しました。

=========================
R での Java サポートをチェックしています... 現在:
インタープリター: '/usr/bin/java'
アーカイバー: '/usr /bin/jar'
コンパイラー: '/usr/bin/javac'
ヘッダー準備: '/usr/bin/javah'
cpp フラグ: '-I/usr/lib/jvm/java-1.7.0-openjdk-1.7. 0.9.x86_64/jre/../include -
I/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.9.x86_64/jre/../include/linux'
Java ライブラリ: '-L/usr /lib/jvm/java-1.7.0-openjdk-1.7.0.9.x86_64/jre/lib/amd64/server
-ljvm'
JNI プログラムをコンパイルできるかどうかを確認しています... はい
、JNI データ型を確認しています... 構成:エラー: 1 つ以上の JNI タイプが、
対応するネイティブタイプと異なります。非標準のコンパイラ フラグを使用する必要がある場合や、
これを修正するために別のコンパイラ。
エラー: パッケージ 'rJava' の構成に失敗しました
* '/home/me/R-3.0.1/library/rJava' を削除しています

==================================

サーバーにはリモートでしかアクセスできないため、ホーム ディレクトリ /home/me 以外への書き込みアクセス権はありません。

どんな情報でも大歓迎です!

4

3 に答える 3

9

install.packages("rJava")通常のユーザー (Linux、Debian) としてインストールしようとしている限り、R バージョン 3.0.2 で同じ問題に遭遇しました。install.packages("rJava")ルートとして実行しても問題はありませんでした。次に、library(rJava)ルートでは機能しましたが、ユーザーとしては機能しませんでした:

Error : .onLoad failed in loadNamespace() for 'rJava', details:
  call: dyn.load(file, DLLpath = DLLpath, ...)
  error: unable to load shared object '/usr/usr.local.original.Debian/lib/R/site-library/rJava/libs/rJava.so':
  libjvm.so: cannot open shared object file: No such file or directory

この問題は、環境変数を追加する必要がJAVA_HOMEありLD_LIBRARY_PATH 、 ( Ubuntu で Java 環境パスを設定する際のトラブル (libjvm.so: 共有オブジェクト ファイルを開けません: そのようなファイルやディレクトリはありません)~/.loginにある手順に従ってください):

setenv JAVA_HOME /usr/lib/jvm/java-7-oracle/
setenv LD_LIBRARY_PATH $JAVA_HOME/jre/lib/amd64:$JAVA_HOME/jre/lib/amd64/server

# For c-shell; for bash, it would have to be:
export JAVA_HOME=/usr/lib/jvm/java-7-oracle/
export LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/amd64:$JAVA_HOME/jre/lib/amd64/server

そのため、システム管理者に rJava をインストールしてもらい、環境変数を設定し、もちろん、.libPaths()rJava を見つけるように R で独自に設定する必要があります。

于 2014-01-26T22:15:01.603 に答える
7

Mac OSx El Capitan でも同じ問題が発生しました。「R CMD javareconf」を使用してRが使用するJavaパス/環境を更新しようとしましたが、効果はありませんでした。

最後に、「R CMD javareconf」を実行すると、Java ライブラリ パスが出力されたことがわかりました。さらに掘り下げると、 https://stackoverflow.com/a/3311983で指摘されているように、JAVA_HOME が正しく設定されていないことがわかりました。JAVA_HOME パスに /jre を追加する必要がありました。

于 2016-10-09T22:15:07.417 に答える