sudo R CMD javareconf和R CMD javareconf使用java 10生成不同的输出

时间:2018-03-27 17:25:32

标签: java r macos rjava java-10

我在macOS 10.13.3上,我只是更新到java 10,当我尝试将R更新到它时,我意识到如果我运行R CMD javareconf有或没有{{1}我会得到两个不同的输出}}。如果我使用sudo运行它会影响Java 9,但如果我在没有sudo的情况下运行它就会配置java 10.

没有sudo

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.

sudo

这样做的最终结果是:没有sudo,因此对于java 10,rJava不会构建。使用sudo和java 9,rJava正常构建。

有谁知道发生了什么事?

PS1 /我已在我的zsh和bash个人资料中将$ 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. 设置为$JAVA_HOME

PS2 /只是为了将所有信息放在一个地方......用Java 10构建rJava时出现以下错误:

JAVA_HOME="$(/usr/libexec/java_home)"

我已经检查过,并且{9}上没有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 ,就像在Java 9中一样。

2 个答案:

答案 0 :(得分:0)

我通过使用sudo ln -s /usr/bin/javah /Library/Java/JavaVirtualMachines/jdk-10.jdk/Contents/Home/bin/javah创建从/ usr / bin / javah到该路径的符号链接来解决。

希望它也适合你。

答案 1 :(得分:0)

正如在R-SIG-mac list上讨论的那样,如果你更新到rJava的最后一个开发版本,问题就解决了。

install.packages('rJava', repos = 'http://rforge.net'