R CMD javareconf ➜ 致命错误:未找到 'jni.h' 文件

3

我正在尝试将R与Java进行配置,运行sudo R CMD javareconf后,我得到了以下结果。

sudo R CMD javareconf                                                                  12:16:29  23.11.17
Java interpreter : /usr/bin/java
Java version     : 9.0.1
Java home path   : /Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home
Java compiler    : /usr/bin/javac
Java headers gen.: /usr/bin/javah
Java archive tool: /usr/bin/jar
System Java on macOS

trying to compile and link a JNI program
detected JNI cpp flags    : -I/System/Library/Frameworks/JavaVM.framework/Headers
detected JNI linker flags : -framework JavaVM
clang -I/usr/local/Cellar/r/3.4.2/lib/R/include -DNDEBUG -I/System/Library/Frameworks/JavaVM.framework/Headers  -I/usr/local/opt/gettext/include -I/usr/local/opt/readline/include -I/usr/local/include   -fPIC  -g -O2  -c conftest.c -o conftest.o
conftest.c:1:10: fatal error: 'jni.h' file not found
#include <jni.h>
         ^~~~~~~
1 error generated.
make: *** [conftest.o] Error 1
Unable to compile a JNI program


JAVA_HOME        : /Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home
Java library path:
JNI cpp flags    :
JNI linker flags :
Updating Java configuration in /usr/local/Cellar/r/3.4.2/lib/R
Done.

我对fatal error: 'jni.h' file not found感到担忧。

因此,我无法安装rJava。

有什么建议吗?谢谢!


你没有说明 https://dev59.com/T1gQ5IYBdhLWcg3wkEzm 或者 https://github.com/Homebrew/homebrew-science/issues/3814 是否有效,这样别人就可以知道在提供帮助之前你尝试了什么。 - hrbrmstr
天啊!我必须列出我尝试过的所有东西吗?不,那些都没用……我已经尝试了。 - lpuerto
1
是的,事实上你需要。你正在向他人请求时间,因此尊重他们的时间至关重要,因为这表明你认为他们的时间很宝贵,并感激他们的帮助。希望其他人会试图忽略掉你的权利问题并帮助你。 - hrbrmstr
我完全理解... 但是,我尝试了许多方法,没有一个有效。我猜问题出在Java 9上。 - lpuerto
1个回答

0

好的!

看起来我通过重新安装带有Java的R解决了问题。

brew reinstall R --with-openblas --with-java 然后我运行 sudo R CMD javareconf \ JAVA_CPPFLAGS='-I/System/Library/Frameworks/JavaVM.framework/Headers -I/Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/

输出如下:

/usr/local/Cellar/r/3.4.2/lib/R/bin/javareconf: line 66: -I/Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/: No such file or directory
Java interpreter : /Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home/bin/java
Java version     : 9.0.1
Java home path   : /Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home
Java compiler    : /Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home/bin/javac
Java headers gen.: /Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home/bin/javah
Java archive tool: /Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home/bin/jar
System Java on macOS

trying to compile and link a JNI program
detected JNI cpp flags    : -I/System/Library/Frameworks/JavaVM.framework/Headers
detected JNI linker flags : -framework JavaVM
clang -I/usr/local/Cellar/r/3.4.2/lib/R/include -DNDEBUG -I/System/Library/Frameworks/JavaVM.framework/Headers  -I/usr/local/opt/gettext/include -I/usr/local/opt/readline/include -I/usr/local/include   -fPIC  -I/Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home/include -I/Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home/include/darwin  -c conftest.c -o conftest.o
clang -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress -L/usr/local/Cellar/r/3.4.2/lib/R/lib -L/usr/local/opt/openblas/lib -L/usr/local/opt/gettext/lib -L/usr/local/opt/readline/lib -L/usr/local/lib -o conftest.so conftest.o -framework JavaVM -L/usr/local/Cellar/r/3.4.2/lib/R/lib -lR -lintl -Wl,-framework -Wl,CoreFoundation


JAVA_HOME        : /Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home
Java library path:
JNI cpp flags    : -I/System/Library/Frameworks/JavaVM.framework/Headers
JNI linker flags : -framework JavaVM
Updating Java configuration in /usr/local/Cellar/r/3.4.2/lib/R
Done.

我将JAVA_HOME设置为:

export JAVA_HOME="$(/usr/libexec/java_home)" 

这样做正确吗?还是最好不定义JAVA_HOME?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接