从 Ubuntu 16 升级到 18.4 后,我无法在 R 中安装 rJava 包。
我阅读了其他类似的帖子,但没有解决我的问题。如果我install.packages("rJava")
在 R 上运行,结果是这样的:
Error: package or namespace load failed for ‘rJava’:
.onLoad failed in loadNamespace() for 'rJava', details:
call: dyn.load(file, DLLpath = DLLpath, ...)
error: unable to load shared object '/home/salvatore/R/x86_64-pc-linux-gnu-library/3.5/rJava/libs/rJava.so':
libjvm.so: cannot open shared object file: No such file or directory
Error: loading failed
Execution halted
ERROR: loading failed
* removing ‘/home/salvatore/R/x86_64-pc-linux-gnu-library/3.5/rJava’
当我跑步时sudo R CMD javareconf
:
Java interpreter : /usr/lib/jvm/java-8-oracle/jre/bin/java
Java version : 1.8.0_181
Java home path : /usr/lib/jvm/java-8-oracle
Java compiler : /usr/lib/jvm/java-8-oracle/bin/javac
Java headers gen.: /usr/lib/jvm/java-8-oracle/bin/javah
Java archive tool: /usr/lib/jvm/java-8-oracle/bin/jar
trying to compile and link a JNI program
detected JNI cpp flags : -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux
detected JNI linker flags : -L$(JAVA_HOME)/jre/lib/amd64/server -ljvm
gcc -std=gnu99 -I"/usr/share/R/include" -DNDEBUG -I/usr/lib/jvm/java-8-oracle/include -I/usr/lib/jvm/java-8-oracle/include/linux -fpic -g -O2 -fdebug-prefix-map=/build/r-base-oNcpyf/r-base-3.5.1=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -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-8-oracle/jre/lib/amd64/server -ljvm -L/usr/lib/R/lib -lR
JAVA_HOME : /usr/lib/jvm/java-8-oracle
Java library path: $(JAVA_HOME)/jre/lib/amd64/server
JNI cpp flags : -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux
JNI linker flags : -L$(JAVA_HOME)/jre/lib/amd64/server -ljvm
Updating Java configuration in /usr/lib/R
Done.
欢迎任何帮助。
答案1
就我而言,我还必须使用:sudo R CMD javareconf
,才能使其工作。
答案2
在全新安装的 Ubuntu 18.04 LTS 中,我执行了以下操作
sudo apt-get install r-base-dev default-jdk
(所以我从官方存储库获得了 R 3.4)。
然后在R
RStudio 1.1.456 会话中:
install.packages('rJava')
最终
* DONE (rJava)
注意:我使用的是 Bionic 存储库中的默认 OpenJDK 11 -
$ update-java-alternatives -l
java-1.11.0-openjdk-amd64 1101 /usr/lib/jvm/java-1.11.0-openjdk-amd64
答案3
运行 Ubuntu 18.04 64 位、R 3.60 和 RStudio 1.2.1335。
就我而言,我必须做以下事情:
(暂时)通过将 jdk.csh 和 jdk.sh 重命名为 jdk.csh.old 和 jdk.sh.old(在 etc/profile.d 中)禁用 Oracle Java 8。
安装 java-11-openjdk。
将 JAVA_HOME="/usr/lib/jvm/java-11-openjdk" 添加到 /etc/environment。
运行“sudo update-alternatives --config java”并选择“/usr/lib/jvm/java-11-openjdk-amd64.bin/java”。
运行“sudo R CMD javareconf”。
注销/登录。
打开 RStudio 并安装 rJava。
然后 rJava 安装就完成了,没有任何错误。
答案4
对我来说,我使用前面答案中的一些代码创建了一个 bash 文件。这是 bash 文件:
# JAVA_LD_LIBRARY_PATH library path necessary at run-time
# JAVA_CPPFLAGS C preprocessor flags necessary to compile JNI programs
# JAVA_LIBS libraries (as linker flags) necessary to compile JNI programs
export JAVA_HOME=/opt/apps/jdk
export JAVA_LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/amd64/server
export JAVA_CPPFLAGS="-I$JAVA_HOME/include -I$JAVA_HOME/include/linux "
export JAVA_LIBS="-L$JAVA_HOME/jre/lib/amd64/server -ljvm"
env|grep JAVA
R CMD javareconf