找不到jni.h文件

时间:2019-07-19 18:56:13

标签: r macos rjdbc

我最终尝试在运行R 3.3.3,Java 12和Mojave OS的Mac上安装RJDBC软件包。

当尝试安装RDJBC时,出现以下错误:

configure: error: One or more Java configuration variables are not set.
Make sure R is configured with full Java support (including JDK). Run
R CMD javareconf
as root to add Java support to R.

If you don't have root privileges, run
R CMD javareconf -e
to set all Java-related variables and then install rJava.

因此,我继续在终端中运行R CMD javareconf并得到以下错误:

conftest.c:1:10: fatal error: 'jni.h' file not found

我在同一主题的网上发现了各种问题,并尝试了建议的解决方案,但没有一个对我有用。它可能是我的OS / Java版本的组合。有人愿意在这里指导我解决问题吗?

1 个答案:

答案 0 :(得分:0)

这将需要一些调整。通常,当R,Java和rJava应该一起工作时,它们并不是一件容易的事。确保通过以下步骤:http://www.owsiak.org/r-java-11-and-making-sure-you-can-load-rjava/

请注意,由于Java 12中的更改,不再可能通过反射来动态影响共享库的位置-这会影响rJava。我很确定您不会获得rJava和任何其他基于JNI的代码,它们都可以在R中与Java 12一起正常工作。

配置好R后,它将按预期工作

> R

R version 3.6.1 (2019-07-05) -- "Action of the Toes"
Copyright (C) 2019 The R Foundation for Statistical Computing
Platform: x86_64-apple-darwin15.6.0 (64-bit)

...
...

> install.packages("RJDBC")
--- Please select a CRAN mirror for use in this session ---
...

> library(RJDBC)
Loading required package: DBI
>

更新

对于Java 12,请尝试以下操作。在~/.profile内添加以下行

export JAVA_HOME=$(/usr/libexec/java_home -v 12)

然后运行

> sudo R CMD javareconf \
JAVA_HOME=${JAVA_HOME} \
JAVA=${JAVA_HOME}/bin/java \
JAVAC=${JAVA_HOME}/bin/javac \
JAVAH=${JAVA_HOME}/bin/javah \
JAR=${JAVA_HOME}/bin/jar

并且在R

内部
> system("java -version")
java version "12.0.1" 2019-04-16
Java(TM) SE Runtime Environment (build 12.0.1+12)
Java HotSpot(TM) 64-Bit Server VM (build 12.0.1+12, mixed mode, sharing)
> library(RJDBC)
Loading required package: DBI
Loading required package: rJava
>

当然,您仍然需要XCode.app,因为它包含JNI的标题。

更新

为了确保所有应用都获得Java 11而不是Java 12(不仅基于CLI),您可以按照以下方式“禁用” Java 12

cd /Library/Java/JavaVirtualMachines/jdk-12.0.1.jdk/Contents
sudo mv Info.plist Info.plist~

从现在开始,即使您尚未删除Java 12RStudio也会选择正确的版本。

enter image description here