[R] R and Java 10 ➜ rJava not able to build

Luis Puerto luiss.puerto at gmail.com
Wed Mar 28 09:56:39 CEST 2018


Hi Jeff!! 

I really don’t know if running R CMD javareconf with sudo has posed a problem here, now or in the past. What I know is sometimes it’s the only way to really config it, if I don’t run with sudo, in the end it asks me if I want to overwrite the configuration from root 

override rw-r--r--  root/admin for
/usr/local/Cellar/r/3.4.4/lib/R/etc/Makeconf? (y/n [n]) y
override rw-r--r--  root/admin for
/usr/local/Cellar/r/3.4.4/lib/R/etc/ldpaths? (y/n [n]) y

So I really don’t know if this is the problem here or not. 

I really think the problem for R is and rJava is there is no longer a javah file. 

Unable to locate an executable at
"/Library/Java/JavaVirtualMachines/jdk-10.jdk/Contents/Home/bin/javah"
(-1)

Anyhow… I’m still puzzle by the fact that R CMD javareconf with sudo and without has different outcome. 

> configuring Java is not on-topic here

I can't understand why. The problem isn’t java itself but the tool to configure R to use it with a new version. 

Reading the released notes for Java 10: 

> tools/javah
>  <http://www.oracle.com/technetwork/java/javase/10-relnote-issues-4108729.html#JDK-8182758> JEP 313 Remove the Native-Header Generation Tool (javah) 
> As previously announced, the native-header tool, javah, has been removed.
> 
> Native headers can now be generated by using the Java compiler, javac, with the -h option.
> 
> See JDK-8182758 <http://bugs.java.com/view_bug.do?bug_id=JDK-8182758>

I don’t know if this can be fixed parsing an option in R CMD javareconf that points JAVAH to JAVAC -h 



> On 28 Mar 2018, at 04:39, Jeff Newmiller <jdnewmil at dcn.davis.ca.us> wrote:
> 
> I am not a Mac user, but I do use Linux and I would recommend not running R with sudo unless you are an admin ninja. That defensive practice would render the answer to your question moot.
> 
> It is possible that your problem may have started with inappropriate use of sudo in configuring java, but configuring Java is not on-topic here.
> -- 
> Sent from my phone. Please excuse my brevity.
> 
> On March 27, 2018 12:25:33 PM PDT, Luis Puerto <luiss.puerto at gmail.com <mailto:luiss.puerto at gmail.com>> wrote:
>> Hi! 
>> 
>> I’m on macOS 10.13.3 and just installed the new Java 10 using Homebrew
>> Cask. I also have installed R with Homebrew. Everything seems to work
>> fine, however I just get different outputs if I run sudo R CMD
>> javareconf or R CMD javareconf. With sudo I get pointed to Java 9 and
>> without sudo I get pointed to Java 10. I really don’t know why. 
>> 
>> Without sudo:
>> 
>> $ R CMD javareconf                                                     
>> 
>> Java interpreter :
>> /Library/Java/JavaVirtualMachines/jdk-10.jdk/Contents/Home/bin/java
>> Java version     : 10
>> Java home path   :
>> /Library/Java/JavaVirtualMachines/jdk-10.jdk/Contents/Home
>> Java compiler    :
>> /Library/Java/JavaVirtualMachines/jdk-10.jdk/Contents/Home/bin/javac
>> Java headers gen.: /usr/bin/javah
>> Java archive tool:
>> /Library/Java/JavaVirtualMachines/jdk-10.jdk/Contents/Home/bin/jar
>> Non-system Java on macOS
>> 
>> trying to compile and link a JNI program
>> detected JNI cpp flags    : -I$(JAVA_HOME)/include
>> -I$(JAVA_HOME)/include/darwin
>> detected JNI linker flags : -L$(JAVA_HOME)/lib/server -ljvm
>> /usr/local/opt/llvm/bin/clang 
>> -I/usr/local/Cellar/r/3.4.4/lib/R/include -DNDEBUG
>> -I/Library/Java/JavaVirtualMachines/jdk-10.jdk/Contents/Home/include
>> -I/Library/Java/JavaVirtualMachines/jdk-10.jdk/Contents/Home/include/darwin
>> -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include   -fPIC 
>> -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c conftest.c -o
>> conftest.o
>> /usr/local/opt/llvm/bin/clang++ -dynamiclib
>> -Wl,-headerpad_max_install_names -undefined dynamic_lookup
>> -single_module -multiply_defined suppress -L/usr/local/opt/gettext/lib
>> -L/usr/local/opt/llvm/lib -Wl,-rpath,/usr/local/opt/llvm/lib
>> -L/usr/local/Cellar/r/3.4.4/lib/R/lib -L/usr/local/opt/gettext/lib
>> -L/usr/local/opt/llvm/lib -Wl,-rpath,/usr/local/opt/llvm/lib -o
>> conftest.so conftest.o
>> -L/Library/Java/JavaVirtualMachines/jdk-10.jdk/Contents/Home/lib/server
>> -ljvm -L/usr/local/Cellar/r/3.4.4/lib/R/lib -lR -lintl -Wl,-framework
>> -Wl,CoreFoundation
>> 
>> 
>> JAVA_HOME        :
>> /Library/Java/JavaVirtualMachines/jdk-10.jdk/Contents/Home
>> Java library path: $(JAVA_HOME)/lib/server
>> JNI cpp flags    : -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/darwin
>> JNI linker flags : -L$(JAVA_HOME)/lib/server -ljvm
>> Updating Java configuration in /usr/local/Cellar/r/3.4.4/lib/R
>> override rw-r--r--  root/admin for
>> /usr/local/Cellar/r/3.4.4/lib/R/etc/Makeconf? (y/n [n]) y
>> override rw-r--r--  root/admin for
>> /usr/local/Cellar/r/3.4.4/lib/R/etc/ldpaths? (y/n [n]) y
>> Done.
>> With sudo:
>> 
>> $ sudo R CMD javareconf                                                
>> 
>> Java interpreter :
>> /Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home/bin/java
>> Java version     : 9.0.4
>> Java home path   :
>> /Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home
>> Java compiler    :
>> /Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home/bin/javac
>> Java headers gen.:
>> /Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home/bin/javah
>> Java archive tool:
>> /Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home/bin/jar
>> Non-system Java on macOS
>> 
>> trying to compile and link a JNI program
>> detected JNI cpp flags    : -I$(JAVA_HOME)/include
>> -I$(JAVA_HOME)/include/darwin
>> detected JNI linker flags : -L$(JAVA_HOME)/lib/server -ljvm
>> /usr/local/opt/llvm/bin/clang 
>> -I/usr/local/Cellar/r/3.4.4/lib/R/include -DNDEBUG
>> -I/Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home/include
>> -I/Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home/include/darwin
>> -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include   -fPIC 
>> -g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe -c conftest.c -o
>> conftest.o
>> /usr/local/opt/llvm/bin/clang++ -dynamiclib
>> -Wl,-headerpad_max_install_names -undefined dynamic_lookup
>> -single_module -multiply_defined suppress -L/usr/local/opt/gettext/lib
>> -L/usr/local/opt/llvm/lib -Wl,-rpath,/usr/local/opt/llvm/lib
>> -L/usr/local/Cellar/r/3.4.4/lib/R/lib -L/usr/local/opt/gettext/lib
>> -L/usr/local/opt/llvm/lib -Wl,-rpath,/usr/local/opt/llvm/lib -o
>> conftest.so conftest.o
>> -L/Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home/lib/server
>> -ljvm -L/usr/local/Cellar/r/3.4.4/lib/R/lib -lR -lintl -Wl,-framework
>> -Wl,CoreFoundation
>> 
>> 
>> JAVA_HOME        :
>> /Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home
>> Java library path: $(JAVA_HOME)/lib/server
>> JNI cpp flags    : -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/darwin
>> JNI linker flags : -L$(JAVA_HOME)/lib/server -ljvm
>> Updating Java configuration in /usr/local/Cellar/r/3.4.4/lib/R
>> Done.
>> The result of be pointed to Java 10 is rJava package not be able to
>> build. 
>> 
>> warning: [options] bootstrap class path not set in conjunction with
>> -source 6
>> warning: [options] source value 6 is obsolete and will be removed in a
>> future release
>> warning: [options] target value 1.6 is obsolete and will be removed in
>> a future release
>> warning: [options] To suppress warnings about obsolete options, use
>> -Xlint:-options.
>> Note: Some input files use or override a deprecated API.
>> Note: Recompile with -Xlint:deprecation for details.
>> Note: Some input files use unchecked or unsafe operations.
>> Note: Recompile with -Xlint:unchecked for details.
>> 4 warnings
>> /usr/bin/javah -d . -classpath . org.rosuda.JRI.Rengine
>> Unable to locate an executable at
>> "/Library/Java/JavaVirtualMachines/jdk-10.jdk/Contents/Home/bin/javah"
>> (-1)
>> make[2]: *** [org_rosuda_JRI_Rengine.h] Error 2
>> make[1]: *** [src/JRI.jar] Error 2
>> make: *** [jri] Error 2
>> ERROR: compilation failed for package ‘rJava’
>> * removing ‘/Users/lpuerto/Library/R/3.x/library/rJava’
>> * restoring previous ‘/Users/lpuerto/Library/R/3.x/library/rJava’
>> 
>> The downloaded source packages are in
>> ‘/private/var/folders/wf/41gjf2mx7m7fmvfd8dr22_5h0000gn/T/RtmpT2kJMY/downloaded_packages’
>> Warning message:
>> In install.packages("rJava", repos = "cloud.r-project.org") :
>> installation of package ‘rJava’ had non-zero exit status
>> I've checked and there isn't a javah on
>> /Library/Java/JavaVirtualMachines/jdk-10.jdk/Contents/Home/bin/javah as
>> in Java 9. Which make me think that either R CMD javareconf isn’t
>> working properly with Java 10 or rJava is not yet compatible with Java
>> 10. 
>> 
>> Does anyone know what is going on? 
>> 
>> Thanks! 
>> 
>> PS/ I’ve opened an issue <https://github.com/s-u/rJava/issues/137 <https://github.com/s-u/rJava/issues/137>> in
>> rJava’s github and a question in stackoverflow
>> <https://stackoverflow.com/questions/49519007/sudo-r-cmd-javareconf-and-r-cmd-javareconf-produce-different-output-with-java-10 <https://stackoverflow.com/questions/49519007/sudo-r-cmd-javareconf-and-r-cmd-javareconf-produce-different-output-with-java-10>>.
>> 
>> 
>> 
>> Best Regards
>> Luis Puerto
>> http://luisspuerto.net <http://luisspuerto.net/>
>> 
>> 
>> 	[[alternative HTML version deleted]]
>> 
>> ______________________________________________
>> R-help at r-project.org <mailto:R-help at r-project.org> mailing list -- To UNSUBSCRIBE and more, see
>> https://stat.ethz.ch/mailman/listinfo/r-help <https://stat.ethz.ch/mailman/listinfo/r-help>
>> PLEASE do read the posting guide
>> http://www.R-project.org/posting-guide.html <http://www.r-project.org/posting-guide.html>
>> and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list