代码之家  ›  专栏  ›  技术社区  ›  lpuerto

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

  •  0
  • lpuerto  · 技术社区  · 7 年前

    我在macOS 10.13.3上更新到java 10,当我尝试将R更新到java 10时,我才意识到如果我运行 R CMD javareconf 带或不带 sudo 。如果我和 苏多 它坚持使用Java 9,但如果我运行时没有 苏多 它配置java 10。

    没有 苏多 :

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

    这样做的最终结果是:如果没有sudo,那么使用java 10,rJava就无法构建。使用sudo和java 9,rJava可以正常构建。

    有人知道发生了什么事吗?

    PS1/我已设置 $JAVA_HOME JAVA_HOME="$(/usr/libexec/java_home)" 在我的zsh和bash配置文件中。

    PS2/只是为了把所有信息放在一个地方。。。使用Java 10构建rJava时,我遇到以下错误:

    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
    

    我查过了没有 javah 在…上 /Library/Java/JavaVirtualMachines/jdk-10.jdk/Contents/Home/bin/javah 与Java 9一样。

    2 回复  |  直到 7 年前
        1
  •  0
  •   blmayer    7 年前

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

    希望它对你也有用。

        2
  •  0
  •   KenHBS    5 年前

    正如在 R-SIG-mac list 如果您更新到rJava的最新开发版本,问题就会得到解决。

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