2016-06-07 59 views
0

我使用Red Hat 5,並且無法安裝rJava無法編譯JNI程序安裝rJava套餐

我運行以下命令:

$ R CMD javareconf -e 

我收到以下錯誤: -

trying to compile and link a JNI program detected JNI cpp flags :

detected JNI linker flags :

gcc -m64 -std=gnu99 -I/usr/include/R -DNDEBUG -I/usr/local/include
-fpic -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fpic -fPIC -c conftest.c -o conftest.o

conftest.c:1:17: fatal error: jni.h: No such file or directory

compilation terminated.

make: *** [conftest.o] Error 1

Unable to compile a JNI program


Java的版本低於: -

Java版本 「1.8.0_91」

的Java(TM)SE運行時環境(建立1.8.0_91-B14)

的HotSpot的Java(TM)64位服務器VM(建25.91-B14混合MOD


JAVA_HOME = /usr/java/jdk1.8.0_91/jre

誰能幫我編譯JNI計劃

+0

刪除 「JRE」 從包JAVA_HOME應該有所幫助。包含文件在JDK中。 – user2543253

回答

0

我在Ubuntu上遇到了類似的問題。查明哪些文件你缺少

find/-name jni.h 2> /dev/null 

可能會是這樣的

/usr/lib/jvm/java-8-openjdk-amd64/include 

,你也可能會丟失jni_md.h,然後運行類似下面,這裏的路徑爲修正上面指出的那些。

R CMD javareconf JAVA_CPPFLAGS="-I/usr/lib/jvm/java-8-openjdk-amd64/include -I/usr/lib/jvm/java-8-openjdk-amd64/include/linux/" 
0

您需要使用JDK而不是JRE。 JDK包含JNI編譯所需的庫和頭文件。

通常,您必須重新配置R並確保指向正確的Java安裝。

看看這裏:http://www.owsiak.org/?p=3671在這裏你可以找到相當詳細的解釋,你必須採取的所有步驟才能讓R正確地使用Java。解釋是爲macOS準備的,但它也適用於基於Linux的系統 - 只需稍作修改即可。

只是概括地說:

  1. 安裝JDK
  2. 重新配置[R

    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 \ 
    JAVA_LD_LIBRARY_PATH=${JAVA_HOME}/jre/lib/server \ 
    JAVA_CPPFLAGS="-I${JAVA_HOME}/include -I${JAVA_HOME}/include/linux" 
    
  3. 開始R和安裝需要的Java