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

Ista Zahn istazahn at gmail.com
Wed Mar 28 16:07:40 CEST 2018


On Wed, Mar 28, 2018 at 3:56 AM, Luis Puerto <luiss.puerto at gmail.com> wrote:
> 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.

Why does this puzzle you? There is no reason to expect the root user's
environment to be the same as your user environment. You can look at

env > me.txt
sudo env > root.txt
diff me.txt root.txt

to see the differences.

>
>> 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

I think you're on the right track here. I tried building rJava with R
configured to use openJDK 10 and got the same error you did. It
appears that rJava does not currently build under openJDK 10. You did
the right thing by opening an issue at
https://github.com/s-u/rJava/issues/137 -- now you just wait to see
what the rJava developers have to say about it. In the meantime, use
JDK 9.

Best,
Ista

>
>
>
>> 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.
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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.



More information about the R-help mailing list