当前位置: 首页 > 知识库问答 >
问题:

安装rJava-"配置:错误:一个或多个JNI类型不同于相应的本机类型"

廖臻
2023-03-14

我在R3.0.1上安装rJava时遇到了这个问题:"配置:错误:一个或多个JNI类型不同于相应的本机类型"

详细信息附于下文。我搜索了类似的问题,但我的问题有点棘手,许多建议的解决方案要么不起作用,要么我无法尝试,因为我使用的服务器没有对系统库的写访问权限。

操作系统:Linux 2.6.18-348.6.1。el5#1 SMP Tue May 21 15:44:27美国东部夏令时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'
存档者:'/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//包括-
I/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.9。x86_64/jre//包括/linux'
javalibs:'-L/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.9。x86_64/jre/lib/amd64/se
服务器-ljvm'
正在检查是否可以编译JNI程序。。。是
正在检查JNI数据类型。。。配置:错误:一个或多个JNI类型与相应的本机类型不同。您可能需要使用非标准编译器标志或不同的编译器来修复此问题
错误:包“rJava”的配置失败
*正在删除“/home/me/R-3.0.1/library/rJava”

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

因为我只能远程访问服务器,所以我对主目录/home/me之外的任何内容都没有写访问权限。

任何信息将高度赞赏!

共有3个答案

宗安翔
2023-03-14

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

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

然后

  • 运行环境更新
  • 来源/etc/profile
  • 启动rstudio(或者如果您使用GUI菜单,则注销并登录以加载环境)

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

基本上,rJava conf测试无法找到libjvm。因此,conftest程序将编译,但不会链接:)

汪皓
2023-03-14

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

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

高峻
2023-03-14

我在尝试安装时遇到了同样的问题。软件包(“rJava”)在R版本3.0.2中,只要我尝试作为普通用户安装(Linux、Debian)。运行install时没有问题。包(“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~/. log(以下说明在Ubuntu上设置Java环境路径的麻烦(libjvm.so:无法打开共享对象文件:没有这样的文件或目录)):

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。

 类似资料:
  • 在R3.0.1上安装rJava时,我遇到了这个问题:“configure:error:一个或多个JNI类型不同于对应的本机类型” 详细消息附于下文。我搜索了类似的问题,但我的问题有点棘手,许多建议的解决方案要么不起作用,要么我无法尝试,因为我工作的服务器没有系统库的写访问权限。 操作系统:Linux 2.6.18-348.6.1.EL5#1 SMP Tue 5月21日15:44:27 EDT 20

  • 我安装rpy2是为了在Python中使用R。但是在安装conda的R版本中,我在安装“rjava”时遇到了问题。 与我的独立版本的R安装在同一台机器上,我没有问题,所以我知道我有正确的版本安装。 对于我使用相同R版本的两个不同设置(独立R和R with conda),我有相同的Java版本 对于这两个设置,以下变量都不退出 定义了。Standalone的路径非常相似: 这里是编译期间的信息。对于独

  • 请看下面我的解决方案,以防这个问题在将来对其他人有所帮助。 我已经检查并尝试了以下决议,但没有一个对我有效: > Sudo R CMD javareconf 更详细的sudo R CMD javareconf Mac OS本身:

  • 我使用一个Android库,它要求我创建两个类,每个类继承自不同的类 (具有公共基类) 现在我有这个代码: 我必须复制这个类来创建一个扩展,即使我的两个类共享完全相同的代码。 我简化了示例的代码,但重复可能很重要 我决定将代码放在这两个类之外的静态方法中,并在类重写的方法中调用它们,但我认为必须有一种更干净的方法来做到这一点。 你能帮我解决这个问题吗? 和都继承自。

  • 问题内容: 我试图在一个元素上拍两个或多个相同类型的注释,在这种情况下是方法。这是我正在使用的近似代码: 编译以上内容时,javac抱怨重复的注释: 这样根本不可能重复注释吗?从学步上讲,上面的两个@Foo实例是否由于内容不同而不同吗? 如果上述方法不可行,有哪些可能的解决方法? 更新:我被要求描述我的用例。开始。 我正在建立一种语法糖化机制,以“映射” POJO到文档存储(例如MongoDB)。

  • 这个应用程序的每个JVM应该使用相同的数据库吗?否则跟踪令牌不会在同一个应用程序中“共享”? 如何在运行传奇的相同应用程序中拆分事件?一个saga类型或saga实例是否总是在同一个应用程序上处理(直到它被关闭,所以另一个实例负责它)? 还是每个JVM都接收事件,并且每个相同类型的传奇都将运行?(并导致发送重复命令和错误) 等。还有很多问题。