web-dev-qa-db-ja.com

rJavaのインストール

SOで以前の質問/回答を使用してこれを解決しようとしましたが、成功しませんでした。ここで、私の問題です。

私はRStudioとUbuntuボックス(14.04)を使用していますが、rJavaをソースからアップグレードしようとしましたが、その過程でそれを失いました。

を使用して再度インストールしようとしましたが、

install.packages("rJava")

次のエラーメッセージが返されました。

configure: error: One or more Java configuration variables are not set.
Make sure R is configured with full Java support (including JDK). Run
R CMD javareconf
as root to add Java support to R.

If you don't have root privileges, run
R CMD javareconf -e
to set all Java-related variables and then install rJava.

ERROR: configuration failed for package ‘rJava’
* removing ‘/home/darren/R/x86_64-pc-linux-gnu-library/3.2/rJava’
Warning in install.packages :
  installation of package ‘rJava’ had non-zero exit status

それで、私はターミナルに行き、タイプしました、

Sudo R CMD javareconf

また、次のエラーが発生しました。

trying to compile and link a JNI program 
detected JNI cpp flags    : 
detected JNI linker flags : -L/usr/lib/jvm/Java-7-openjdk-AMD64/jre/lib/AMD64/server -ljvm
gcc -std=gnu99 -I/usr/share/R/include -DNDEBUG      -fpic  -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security -Werror=format-security -D_FORTIFY_SOURCE=2 -g  -c conftest.c -o conftest.o
conftest.c:1:17: fatal error: jni.h: No such file or directory
 #include <jni.h>
                 ^
compilation terminated.
make: *** [conftest.o] Error 1
Unable to compile a JNI program


Java_HOME        : /usr/lib/jvm/default-Java
Java library path: 
JNI cpp flags    : 
JNI linker flags : 
Updating Java configuration in /usr/lib/R
Done.

onetwo のリンクをたどろうとしましたが、私の問題を解決できなかったようです。 SOにさらにリンクがありますが、どちらをたどるかわからない。UbuntuSoftware CenterからRStudioをアンインストールおよび再インストールしたが、これは何もしなかった差。

他の誰かが助けることができますか?

要するに、Java(jmolなど)のその他の使用を破壊することなく、rJavaでRStudioを再び使用できるようにしたいと考えています。

16
user1945827

JDKがインストールされていないようです。少なくとも必要になります

Sudo apt-get install openjdk-7-jdk

その後、再実行

Sudo R CMD javareconf

Java_HOMEを手動で設定しないでください-それは自動的に検出されます。次のように表示されます。

$ Sudo R CMD javareconf
Java interpreter : /usr/bin/Java
Java version     : 1.7.0_91
Java home path   : /usr/lib/jvm/Java-7-openjdk-AMD64/jre
Java compiler    : /usr/bin/javac
Java headers gen.: /usr/bin/javah
Java archive tool: /usr/bin/jar

trying to compile and link a JNI program 
detected JNI cpp flags    : -I$(Java_HOME)/../include
detected JNI linker flags : -L$(Java_HOME)/lib/AMD64/server -ljvm
gcc -std=gnu99 -I/usr/share/R/include -DNDEBUG -I/usr/lib/jvm/Java-7-openjdk-AMD64/jre/../include     -fpic  -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -g  -c conftest.c -o conftest.o
gcc -std=gnu99 -shared -L/usr/lib/R/lib -Wl,-Bsymbolic-functions -Wl,-z,relro -o conftest.so conftest.o -L/usr/lib/jvm/Java-7-openjdk-AMD64/jre/lib/AMD64/server -ljvm -L/usr/lib/R/lib -lR


Java_HOME        : /usr/lib/jvm/Java-7-openjdk-AMD64/jre
Java library path: $(Java_HOME)/lib/AMD64/server
JNI cpp flags    : -I$(Java_HOME)/../include
JNI linker flags : -L$(Java_HOME)/lib/AMD64/server -ljvm
29
Simon Urbanek

Sudo apt-get install r-cran-rjavaの何が問題になっていますか?

たとえば、以前の回答 とその周りの質問/スレッドを参照してください。

ゼロからインストールする場合、Sudo apt-get build-dep r-cran-rjavaから開始するよりもさらに悪化する可能性があります。 Ubuntuバージョンに対応するJDKが取得されます。

13

まず、ウェブサイトからRstudioをインストールすることをお勧めします。 https://www.rstudio.com/products/rstudio/download/ (つまり、Rstudio 64bit: https://download1.rstudio。 org/rstudio-0.99.489-AMD64.deb )。これは問題を直接解決しませんが、Rstudioの他のバグを回避するのに役立ちます。

エラーについては、JDKがインストールされていることを確認してください。コマンド_Java -version_は、JDKがインストールされているかどうかを判断できないと思います。 JDK自体のパッケージを確認するか、エラーメッセージに基づいてこれを実行する必要があります。

_locate jni.h_出力は、JAVAHOMEと一致または互換性がある必要があります。例:

_/usr/lib/jvm/Java-7-openjdk-AMD64/include/jni.h 
/usr/lib/jvm/Java-7-Oracle/include/jni.h        
_

更新1:_R CMD javareconf_は$(Java_HOME)/includeの下で_jni.h_ファイルを探していますが、JDKがインストールされていますが、 JREディレクトリに対してデフォルトのJavaが設定されている可能性が非常に高いため、エラーが発生しました。

次のコマンドを実行すると、_default-Java_が実際に指している場所を確認できます。

_jRealDir=$(readlink -f /usr/lib/jvm/default-Java)
echo $jRealDir
# sample correct output: /usr/lib/jvm/jdk1.8.0_65 
# or /usr/lib/jvm/Java-8-Oracle if you default to Oracle's
# now check jni.h
ls -l $jRealDir/include/jni.h
# sample expected output:
# /usr/lib/jvm/jdk1.8.0_65/include/jni.h
_

lsコマンドが失敗した場合、javareconf(およびそれ以降のrJava)がJavaではなくJDKから使用できるようにセットアップする必要がありますJRE:次の2つのオプションがあります。

方法1:システム全体で実行する

これは便利ですが、jmolのような他のプログラムに影響を与える可能性があります。しかし、心配しないでください。これは元に戻せます。コマンドを再実行して、古いコマンドを選択するだけです。次のコマンドを実行して、JDKがあるディレクトリを選択します。

_Sudo update-alternatives --config Java
_

jmolがどのように機能するかをテストした後、問題なく機能する場合は、おめでとう。これで、rJavaをテストする準備ができました。そうでない場合は、以下の2番目の方法を試してください

方法2:Rに対してのみ行う

これをホームディレクトリの下の_.Rprofile_に入れます

_Sys.setenv(Java_HOME = '/usr/lib/jvm/jdk1.8.0_65')
# this set Java_HOME for R to correct Java home dir. 
_

_.Rprofile_を更新または作成した後、RstudioでRを再起動します。この場合、_R CMD javareconf_は失敗する可能性がありますが、RstudioのShellメニューの下のToolsから実行する場合は問題ありません。

Ubuntuの株式レポからのインストールまたはRstudioについて。 rJavaを実行しても違いはありません。繰り返しになりますが、ホームページにはRstudioをインストールすることをお勧めします。これは、新しいバージョンにもニースの機能(つまり、私が最も気に入っているオートコンプリート)があるためです。

6
biocyberman

私はこの正確な問題に対処してきましたが、このスレッドや同様のその他の問題は解決していません。私はUbuntu 16.04にいますが、これがどのように機能するかを示しています:

apt-get install openjdk-9-jdk rm -rf /usr/lib/jvm/default-Java ln -s /usr/lib/jvm/Java-9-openjdk-AMD64/ /usr/lib/jvm/default-Java

0
Wayne Workman

エラーメッセージの_Java_HOME_の場所を確認できます。

次に_locate jni.h_を使用して_jni.h_がどこにあるかを見つけ、次にソフトリンクを使用してこの場所を$(Java_HOME)/includeにリンクします(@biocybermanが言及したように)。

これは私がやったことです:

_ln -s /usr/lib/jvm/Java-8-openjdk-AMD64/include/jni.h /opt/conda/include/jni.h
ln -s /usr/lib/jvm/Java-8-openjdk-AMD64/include/linux/jni_md.h /opt/conda/include/jni_md.h
ln -s /usr/lib/jvm/Java-8-openjdk-AMD64/jre/lib/AMD64/server/libjvm.so /usr/lib/
_

_Java_HOME_は_/opt/conda_であり、_jni_md.h_と_-ljvm_もありません。

Ubuntu _16.04_を使用しています。

0
Belter