gpt4 book ai didi

java - R CMD javareconf 找不到 jni.h

转载 作者:搜寻专家 更新时间:2023-10-30 20:59:35 25 4
gpt4 key购买 nike

我正在尝试使用 Anaconda 在基于 debian (jessie) 的 docker 容器中安装 rJava。

作为 root,我做到了

$ apt-get update  && apt-get install -y --no-install-recommends \
default-jdk default-jre libicu-dev

然后

$ R CMD javareconf 
Java interpreter : /usr/lib/jvm/jdk1.8.0_121/jre/bin/java
Java version : 1.8.0_121
Java home path : /usr/lib/jvm/jdk1.8.0_121
Java compiler : /usr/lib/jvm/jdk1.8.0_121/bin/javac
Java headers gen.: /usr/lib/jvm/jdk1.8.0_121/bin/javah
Java archive tool: /usr/lib/jvm/jdk1.8.0_121/bin/jar

trying to compile and link a JNI program
detected JNI cpp flags : -I/usr/lib/jvm/java/include -I/usr/lib/jvm/java/include/linux
detected JNI linker flags : -L$(JAVA_HOME)/jre/lib/amd64/server -ljvm
gcc -std=gnu99 -I/opt/conda/lib/R/include -DNDEBUG -I/usr/lib/jvm/java/include -I/usr/lib/jvm/java/include/linux -I/opt/conda/include -fpic -I/opt/conda/include -c conftest.c -o conftest.o
conftest.c:1:17: fatal error: jni.h: No such file or directory
#include <jni.h>
^
compilation terminated.
/opt/conda/lib/R/etc/Makeconf:133: recipe for target 'conftest.o' failed
make: *** [conftest.o] Error 1
Unable to compile a JNI program


JAVA_HOME : /usr/lib/jvm/jdk1.8.0_121
Java library path:
JNI cpp flags :
JNI linker flags :
Updating Java configuration in /opt/conda/lib/R
Done.

但是jni.h在JDK里面是对的:

# find /usr/lib/jvm/jdk1.8.0_121/ -name jni.h
/usr/lib/jvm/jdk1.8.0_121/include/jni.h

只是看起来 javareconf 没有找到它。而且,如果我查看可以使用 javareconf 设置的所有变量,例如 JAVA_HOME,我看不到设置 JNI cpp 标志的能力,这需要正确的包含。

我看过 various posts网上到处都是这个问题,但是没有解决办法。

最佳答案

我不确定这里是否已确认答案,但我会向所有人指出这个 article安德鲁科利尔。

他的建议:

(1) 更新所有存储库

sudo apt update -y

(2) 确保安装了 JRE 和 JDK 8

sudo apt install -y openjdk-8-jdk openjdk-8-jre

(3) 然后,正如许多用户已经说过的那样,将 R 指向带有 JDK 8 显式路径的 java

sudo R CMD javareconf JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/

具体的Java包并不重要,只要在/include目录下包含所有必要的编译内容即可。

user@laptop:~$ ls /usr/lib/jvm/java-8-openjdk-amd64/include/
classfile_constants.h jdwpTransport.h jvmticmlr.h linux
jawt.h jni.h jvmti.h

有关这方面的更多信息,我建议 how to make jni.h be found? 用于正确定位/编译此目录。

关于java - R CMD javareconf 找不到 jni.h,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42562160/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com