Installing rJava fails consistently, whether installed via the command line as below, or through "install.packages( 'rJava' )", and whether 0.84 or 0.85 is used, with the message :- "checking JNI data types... configure: error: One or more JNI types differ from the corresponding native type. You may need to use non-standard compiler flags or a different compiler in order to fix this."
I've tried to fix it using suggestions from the r-help list, and the Gentoo java documentation, but had no joy so far. Other Java stuff works fine on this box. # R CMD INSTALL rJava_0.8-5.tar.gz * installing to library ‘/usr/lib64/R/library’ * installing *source* package ‘rJava’ ... checking for gcc... x86_64-pc-linux-gnu-gcc -std=gnu99 checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether x86_64-pc-linux-gnu-gcc -std=gnu99 accepts -g... yes checking for x86_64-pc-linux-gnu-gcc -std=gnu99 option to accept ISO C89... none needed checking how to run the C preprocessor... x86_64-pc-linux-gnu-gcc -std=gnu99 -E checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for ANSI C header files... yes checking for sys/wait.h that is POSIX.1 compatible... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking for string.h... (cached) yes checking sys/time.h usability... yes checking sys/time.h presence... yes checking for sys/time.h... yes checking for unistd.h... (cached) yes checking for an ANSI C-conforming const... yes checking whether time.h and sys/time.h may both be included... yes configure: checking whether x86_64-pc-linux-gnu-gcc -std=gnu99 supports static inline... yes checking whether setjmp.h is POSIX.1 compatible... yes checking whether sigsetjmp is declared... yes checking whether siglongjmp is declared... yes checking Java support in R... present: interpreter : '/usr/bin/java' archiver : '/usr/bin/jar' compiler : '/home/astaines/.gentoo/java-config-2/current-user-vm/bin/javac' header prep.: '/usr/bin/javah' cpp flags : '-I/opt/sun-jdk-1.6.0.20/jre/../include -I/opt/sun-jdk-1.6.0.20/jre/../include/linux' java libs : '-L/opt/sun-jdk-1.6.0.20/jre/lib/amd64/server -L/opt/sun-jdk-1.6.0.20/jre/lib/amd64 -L/opt/sun-jdk-1.6.0.20/jre/../lib/amd64 -L -L/usr/java/packages/lib/amd64 -L/usr/lib64 -L/lib64 -L/lib -L/usr/lib -ljvm' checking whether JNI programs can be compiled... yes checking JNI data types... configure: error: One or more JNI types differ from the corresponding native type. You may need to use non-standard compiler flags or a different compiler in order to fix this. ERROR: configuration failed for package ‘rJava’ * removing ‘/usr/lib64/R/library/rJava’ # R --version R version 2.11.1 (2010-05-31) # java -showversion java version "1.6.0_20" Java(TM) SE Runtime Environment (build 1.6.0_20-b02) Java HotSpot(TM) 64-Bit Server VM (build 16.3-b01, mixed mode) The compiler mentioned in the R output :- /home/astaines/.gentoo/java-config-2/current-user-vm is a link pointing to /usr/lib/jvm/sun-jdk-1.6 which in turn is a link pointing to /opt/sun-jdk-1.6.0.20 however, any of the three will work. # R CMD javareconf *** JAVA_HOME is not a valid path, ignoring Java interpreter : /usr/bin/java Java version : 1.6.0_20 Java home path : /opt/sun-jdk-1.6.0.20/jre Java compiler : /home/astaines/.gentoo/java-config-2/current-user-vm/bin/javac Java headers gen.: /usr/bin/javah Java archive tool: /usr/bin/jar Java library path: $(JAVA_HOME)/lib/amd64/server:$(JAVA_HOME)/lib/amd64:$(JAVA_HOME)/../lib/amd64::/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib JNI linker flags : -L$(JAVA_HOME)/lib/amd64/server -L$(JAVA_HOME)/lib/amd64 -L$(JAVA_HOME)/../lib/amd64 -L -L/usr/java/packages/lib/amd64 -L/usr/lib64 -L/lib64 -L/lib -L/usr/lib -ljvm JNI cpp flags : -I$(JAVA_HOME)/../include -I$(JAVA_HOME)/../include/linux Updating Java configuration in /usr/lib64/R Done. JAVA_HOME is unset by default on my system. As suggested, by Godmar Back, on the list I've tried setting it. The Gentoo way is to use JAVA_HOME=$(java-config --jdk-home) and this produces what I think is the desired result #printenv | grep -i JAVA_HOME JAVA_HOME=/opt/sun-jdk-1.6.0.20 BUT # env JAVA_HOME=/opt/sun-jdk-1.6.0.20/ R CMD javareconf *** JAVA_HOME is not a valid path, ignoring Java interpreter : /usr/bin/java Java version : 1.6.0_20 Java home path : /opt/sun-jdk-1.6.0.20/jre Java compiler : /home/astaines/.gentoo/java-config-2/current-user-vm/bin/javac Java headers gen.: /usr/bin/javah Java archive tool: /usr/bin/jar Java library path: $(JAVA_HOME)/lib/amd64/server:$(JAVA_HOME)/lib/amd64:$(JAVA_HOME)/../lib/amd64::/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib JNI linker flags : -L$(JAVA_HOME)/lib/amd64/server -L$(JAVA_HOME)/lib/amd64 -L$(JAVA_HOME)/../lib/amd64 -L -L/usr/java/packages/lib/amd64 -L/usr/lib64 -L/lib64 -L/lib -L/usr/lib -ljvm JNI cpp flags : -I$(JAVA_HOME)/../include -I$(JAVA_HOME)/../include/linux Updating Java configuration in /usr/lib64/R Done. AND Kitchen ~ # env JAVA_HOME=/opt/sun-jdk-1.6.0.20/ R CMD INSTALL rJava_0.8-5.tar.gz * installing to library ‘/usr/lib64/R/library’ * installing *source* package ‘rJava’ ... checking for gcc... x86_64-pc-linux-gnu-gcc -std=gnu99 checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no .... checking Java support in R... present: interpreter : '/usr/bin/java' archiver : '/usr/bin/jar' compiler : '/home/astaines/.gentoo/java-config-2/current-user-vm/bin/javac' header prep.: '/usr/bin/javah' cpp flags : '-I/opt/sun-jdk-1.6.0.20/jre/../include -I/opt/sun-jdk-1.6.0.20/jre/../include/linux' java libs : '-L/opt/sun-jdk-1.6.0.20/jre/lib/amd64/server -L/opt/sun-jdk-1.6.0.20/jre/lib/amd64 -L/opt/sun-jdk-1.6.0.20/jre/../lib/amd64 -L -L/usr/java/packages/lib/amd64 -L/usr/lib64 -L/lib64 -L/lib -L/usr/lib -ljvm' checking whether JNI programs can be compiled... yes checking JNI data types... configure: error: One or more JNI types differ from the corresponding native type. You may need to use non-standard compiler flags or a different compiler in order to fix this. ERROR: configuration failed for package ‘rJava’ * removing ‘/usr/lib64/R/library/rJava’ All advice gratefully received -- Anthony Staines, Professor of Health Systems Research, School of Nursing, Dublin City University, Dublin 9,Ireland. Tel:- +353 1 700 7807. Mobile:- +353 86 606 9713 ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.