首页 文章

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

提问于
浏览
6

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

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

OS :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( 1200576 )',在安装过程中我得到了:

=========================
检查R中的Java支持...现在:
翻译:'/usr/bin/java'
存档:'/usr/bin/jar'
编译器:'/usr/bin/javac'
Headers 准备:'/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 /../在include / 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 回答

  • 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 .

  • 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 .

  • 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

    • source /etc/profile

    • start rstudio (或者如果您使用GUI菜单,注销并登录以加载环境)

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

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

相关问题