install rJava - “configure:error:一个或多个JNI类型与相应的本机类型不同”

时间:2013-08-30 10:23:02

标签: java r java-native-interface rjava

我在R3.0.1上安装rJava时遇到了这个问题: “configure:error:一个或多个JNI类型与相应的本机类型不同”

详细信息如下。 我搜索了类似的问题,但我的问题有点棘手,许多提议的解决方案要么无法工作,要么我无法尝试,因为我正在服务器上,我没有对系统库的写访问权。

操作系统: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'
archiver:'/ 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 /../包括/ Linux的
java libs:' - L / usr / lib / jvm / java-1.7.0-openjdk-1.7.0.9.x86_64 / jre / lib / amd64 / se
rver -ljvm'
检查是否可以编译JNI程序......是的
检查JNI数据类型... configure:错误:一个或多个JNI类型与相应的本机类型不同。您可能需要使用非标准编译器标志或 一个不同的编译器,以解决这个问题。
错误:包“rJava”的配置失败
*删除'/home/me/R-3.0.1/library/rJava'

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

由于我只能远程访问服务器,因此我无法对主目录/ home / me以外的任何内容进行写访问。

任何信息都将受到高度赞赏!

3 个答案:

答案 0 :(得分:9)

我在R版3.0.2中尝试install.packages("rJava")时遇到了同样的问题,只要我尝试以普通用户身份安装(Linux,Debian)。以root身份运行install.packages("rJava")没有问题。然后,尝试library(rJava)为root工作但不是我作为用户:

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_HOMELD_LIBRARY_PATH所需的此问题 到~/.login(按照Trouble in Setting Java Environment Path on Ubuntu (libjvm.so: cannot open shared object file: No such file or directory)上的说明操作):

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,然后设置你的环境变量,当然,在R中设置你自己的.libPaths(),以便找到rJava。

答案 1 :(得分:7)

我在Mac OSx El Capitan上遇到了同样的问题。我尝试使用“R CMD javareconf”更新R使用的java路径/ envs,没有任何效果。

最后,我看到当我运行“R CMD javareconf”我的Java库路径时:在输出中是空的。通过进一步深入挖掘,我发现我的JAVA_HOME设置不正确https://stackoverflow.com/a/3311983。我不得不在JAVA_HOME路径中添加额外的/ jre。

答案 2 :(得分:2)

使用linux,特别是64位Gentoo,我的解决方案是将以下行添加到 /etc/env.d/20java-config

LD_LIBRARY_PATH="/etc/java-config-2/current-system-vm/jre/lib/amd64:/etc/java-config-2/current-system-vm/jre/lib/amd64/server"

然后

  • 运行 env-update
  • 来源/ etc / profile
  • 启动 rstudio (或者如果您使用的是GUI菜单,请注销并登录以加载环境)

上述更改需要由root进行,但随后将适用于下次登录时使用相同系统的非root用户。

基本上,rJava conf测试未能找到libjvm.so,conftest程序会编译但不能链接:)