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

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

白文彬
2023-03-14

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

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

操作系统:Linux 2.6.18-348.6.1.EL5#1 SMP Tue 5月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”
存档器:“/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/../include/linux
Java库:“是
正在检查JNI数据类型...configure:error:一个或多个JNI类型与
对应的本机类型不同。您可能需要使用非标准编译器标志或
其他编译器来修复此问题。
错误:包“r java”的配置失败
*正在删除“/home/me/r-3.0.1/library/rjava”

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

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

如有任何信息,将不胜感激!

共有1个答案

劳灵均
2023-03-14

我在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中(以下说明在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时遇到了这个问题:"配置:错误:一个或多个JNI类型不同于相应的本机类型" 详细信息附于下文。我搜索了类似的问题,但我的问题有点棘手,许多建议的解决方案要么不起作用,要么我无法尝试,因为我使用的服务器没有对系统库的写访问权限。 操作系统:Linux 2.6.18-348.6.1。el5#1 SMP Tue May 21 15:44:27美国东部夏令时2013 x86

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

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

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

  • 我正在寻找一种将long或long转换为从Number派生的类型的方法: 问题在于方法。当前代码不起作用。如何从中获取,它是一个?当然有一个简单的方法可以做到这一点。。。

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