Dr.*_*ike 16 java openjdk r rjava ubuntu-14.04
嗨,我有来自cran的rJava包的问题.
我安装了
sudo apt-get install openjdk-7-jdk
sudo apt-get install r-cran-rjava
Run Code Online (Sandbox Code Playgroud)
跑了
sudo R CMD javareconf
# Java interpreter : /usr/bin/java
# Java version : 1.7.0_55
# 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
Run Code Online (Sandbox Code Playgroud)
然后我尝试运行R并加载rJava并得到以下错误:
R
> library(rJava)
Error : .onLoad failed in loadNamespace() for 'rJava', details:
call: dyn.load(file, DLLpath = DLLpath, ...)
error: unable to load shared object '/usr/lib/R/site-library/rJava/libs/rJava.so':
libjvm.so: cannot open shared object file: No such file or directory
Error: package or namespace load failed for ‘rJava’
Run Code Online (Sandbox Code Playgroud)
我在Ubuntu 14.04 64位上使用R版本3.1.0(2014-04-10) - "春之舞"
更新:实际上这不是特定于OpenJDK,我只是尝试了oracle java 8并得到了相同的结果.此外,我在这里找到了这个解决方法,我不愿意使用,因为它确实是一种解决方法,并没有真正解释为什么它是必要的.在我看来,包装系统应该处理这个问题.看起来像libjvm.so是问题,我把它放在这里
/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/jamvm/libjvm.so
/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/server/libjvm.so
/usr/lib/jvm/java-7-oracle/jre/lib/amd64/server/libjvm.so
Run Code Online (Sandbox Code Playgroud)
由于某种原因,尽管使用sudo R CMD javareconf进行更新,但rJava仍无法找到它们.
更新2:情节变浓:如果我将R作为sudo运行它.
感谢指针.
小智 10
你可以通过在超级用户中打开rstudio来解决这个问题
sudo rstudio
Run Code Online (Sandbox Code Playgroud)
然后在R跑
install.packages('rJava')
Run Code Online (Sandbox Code Playgroud)
小智 7
我遇到了类似配置的相同问题(R 3.1.0,Ubuntu 12.10,32位).我发现答案是正确设置LD_LIBRARY_PATH,如下所述: 错误:刚才无法加载已安装的软件包,除了有问题的子目录是'客户'而不是'服务器'.所以现在我正在设置我的环境:
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386
export LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/i386:$JAVA_HOME/jre/lib/i386/client
Run Code Online (Sandbox Code Playgroud)
我能够使用这个答案来解决这个问题:https://stackoverflow.com/a/25932828/3939832
如果您安装了Oracle java 7或8,这将非常有用.在我的案例中导出变量不是一个永久的解决方案.您应该通过执行以下操作来检查R正在使用的环境:
Sys.getenv("JAVA_HOME")
Run Code Online (Sandbox Code Playgroud)
然后您可以通过创建上述答案链接中所述的java.conf文件来使用该环境on /etc/ld.so.conf.d/.
小智 5
如果您使用的是oracle java,请使用以下命令:
sudo R CMD javareconf
无济于事:
sudo R CMD javareconf **JAVA_HOME**=(path where java home is located)
Run Code Online (Sandbox Code Playgroud)