Linux下rJava安装失败解决方案

文章目录[隐藏]

报错信息



checking whether JNI programs can be compiled... configure: error: Cannot compile a simple JNI program. See config.log for details.

Make sure you have Java Development Kit installed and correctly registered in R.

using C compiler: ‘gcc (Ubuntu 11.3.0-1ubuntu1~22.04.1) 11.3.0’ gcc -I"/usr/share/R/include" -DNDEBUG -fpic -g -O2 -ffile-prefix-map=/build/r-base-qoPWdk/r-base-4.3.1=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -c conftest.c -o conftest.o conftest.c:1:10: fatal error: jni.h: No such file or directory 1 | #include <jni.h> | ^~~~~~~ compilation terminated. make: *** [/usr/lib/R/etc/Makeconf:191: conftest.o] Error 1 Unable to compile a JNI program

解决方案

首先重新安装jdk,例如Java11的jdk以Ubuntu/Debian为例是`openjdk-11-jdk`:



sudo apt-get install openjdk-11-jdk -y

然后重新配置R的Java环境:



R CMD javareconf

问题解决



root@Rstudio:~# R CMD javareconf

Java interpreter : /usr/lib/jvm/default-java/bin/java

Java version     : 11.0.19

Java home path   : /usr/lib/jvm/default-java

Java compiler    : /usr/lib/jvm/default-java/bin/javac

Java headers gen.: 

Java archive tool: /usr/lib/jvm/default-java/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)/lib/server -ljvm using C compiler: ‘gcc (Ubuntu 11.3.0-1ubuntu1~22.04.1) 11.3.0’ gcc -I"/usr/share/R/include" -DNDEBUG -I/usr/lib/jvm/default-java/include -I/usr/lib/jvm/default-java/include/linux -fpic -g -O2 -ffile-prefix-map=/build/r-base-qoPWdk/r-base-4.3.1=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -c conftest.c -o conftest.o gcc -shared -L/usr/lib/R/lib -Wl,-Bsymbolic-functions -flto=auto -ffat-lto-objects -flto=auto -Wl,-z,relro -o conftest.so conftest.o -L/usr/lib/jvm/default-java/lib/server -ljvm -L/usr/lib/R/lib -lR

JAVA_HOME : /usr/lib/jvm/default-java Java library path: $(JAVA_HOME)/lib/server JNI cpp flags : -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux JNI linker flags : -L$(JAVA_HOME)/lib/server -ljvm Updating Java configuration in /usr/lib/R Done.


This article is under CC BY-NC-SA 4.0 license.
Please quote the original link:https://www.liujason.com/article/1245.html
Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy