Erro de carregamento do rJava no RStudio / R após “upgrade” para o OSX Yosemite

Eu recentemente “atualizei” do OSX Mountain Lion para o Yosemite e do R 3.1.3 para o 3.2. Imediatamente após a atualização, quando abri o R ou o RStudio, recebi uma mensagem pop-up informando que eu precisava instalar o Java 6. Além disso, carregar o rJava ou qualquer pacote que dependesse do rJava (por exemplo, xlsx ) fazia o RStudio falhar também caiu quando eu tentei isso abrindo R.app diretamente).

Depois de tentar algumas correções encontradas no Stack Overflow e em outros lugares (mais detalhes abaixo), estou em um ponto em que o carregamento de rJava ou qualquer pacote que dependa de rJava não faz mais R falhar, mas resulta no seguinte erro:

 library(rJava) Error : .onLoad failed in loadNamespace() for 'rJava', details: call: dyn.load(file, DLLpath = DLLpath, ...) error: unable to load shared object '/Library/Frameworks/R.framework/Versions/3.2/Resources/library/rJava/libs/rJava.so': dlopen(/Library/Frameworks/R.framework/Versions/3.2/Resources/library/rJava/libs/rJava.so, 6): Library not loaded: @rpath/libjvm.dylib Referenced from: /Library/Frameworks/R.framework/Versions/3.2/Resources/library/rJava/libs/rJava.so Reason: image not found Error: package or namespace load failed for 'rJava' 

No entanto, se eu invoco R da linha de comando e, em seguida, carrego rJava ou qualquer pacote que dependa de rJava , parece funcionar (ou pelo menos eu não recebo nenhuma mensagem de erro).

Eu tentei várias correções tentadas diferentes, algumas delas algumas vezes, e não consigo me lembrar exatamente do que eu fiz em que ordem (não percebi que isso seria um pântano e não estava realmente acompanhando) , mas aqui está a essência disso:

  • Adicionado o seguinte ao meu .bash_profile (por esta resposta SO ):

    exportar JAVA_HOME = “/ usr / libexec / java_home -v 1.8″
    exportar LD_LIBRARY_PATH = $ JAVA_HOME / jre / lib / server

  • Reconfigurou java na linha de comando da seguinte forma:

    sudo R CMD javareconf -n

  • As options("java.home") e descobertas foram definidas como NULL . Eu tentei defini-lo para o seguinte (por esta questão SO ):

    opções (“java.home” = “/ Biblioteca / Java / JavaVirtualMachines / jdk1.8.0_45.jdk / Contents / Home / jre”)

  • rJava o mais recente Java Development Kit e reinstalei o rJava da origem (não me lembro de onde o encontrei).

Em algum momento, enquanto tentava tudo isso, consegui carregar rJava sem travar R, mas recebi a mensagem de erro postada acima. Além disso, quando eu sai do RStudio, parece que ele fecha normalmente, mas uma mensagem “RStudio inesperadamente” aparece, indicando que o programa falhou ao tentar fechar.

Eu finalmente decidi instalar o Java para OS X 2014-001 (Java 6), como eu parecia estar ficando sem opções. Agora, quando abri R ou RStudio, a mensagem pop-up “Este software precisa de Java 6” não apareceu mais. No entanto, eu ainda estava recebendo o .onLoad failed in loadNamespace() for 'rJava' mensagem de erro postada acima.

Revendo algumas das postagens que eu já tinha visto, notei outra resposta SO que eu não tinha percebido antes, que recomendou a abertura do RStudio com o seguinte código de linha de comando que dá ao RStudio o caminho correto para o java:

LD_LIBRARY_PATH = $ (/ usr / libexec / java_home) / jre / lib / servidor: open -a RStudio

Isso abriu uma janela do RStudio e eu também consegui carregar o rJava e os pacotes que dependem dele sem receber um erro.

Por fim, tentei executar R a partir da linha de comando (que eu não tinha feito antes). Acontece que na linha de comando, o carregamento de rJava ou qualquer pacote que depende de rJava funciona e não rJava nenhum erro.

Então, agora posso fazer o rJava funcionar se eu abrir o RStudio a partir da linha de comando com o código que dá ao RStudio o caminho java (como mencionado acima). No entanto, gostaria de encontrar uma maneira de corrigir o problema subjacente, seja ele qual for, para que o RStudio possa ser aberto da maneira usual do Mac, sem precisar de um kludge de linha de comando. Eu também estou preocupado que ter uma versão antiga do Java instalada poderia causar problemas no futuro.

Alguém tem alguma idéia sobre como diagnosticar e resolver esse problema?

   

    Eu tive o mesmo problema e passei pelos mesmos passos que você. A etapa final para permitir a boot do RStudio por meio do Finder / Spotlight foi vincular o libjvm.dylib a / usr / local / lib:

     sudo ln -f -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib 

    -f flag é adicionado para forçar a sobrescrever o arquivo / link existente

    No OSX El Capitan 10.11, o usuário não tem permissão para gravar em / usr / lib. Então, use o seguinte comando:

     sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib 

    Você pode carregar o libjvm.dylib explicitamente, por executar como

     dyn.load('/Library/Java/JavaVirtualMachines/jdk1.8.0_66.jdk/Contents/Home/jre/lib/server/libjvm.dylib') library(rJava) 

    Seguinte comando funciona:

     sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib 

    Depois disso, no RStudio, o carregamento de rJava funciona através do carregamento do pacote “xlsx”.

     library("xlsx") 

    PS # 1 Ambiente: Mac OS X El Capitan 10.11.3 + com RStudio 0.99.491+ e R 3.2.3+. (Eu testei isso também no macOS Sierra (10.12) e R.3.3.1.)

    PS # 2 Eu acho que o openxlsx é muito mais rápido e não depende de Java para funcionar, então agora estou usando esse pacote. Espero que ajude os outros.

    No macOS High Sierra (10.13.1) e Java Versão 9, é necessário usar um caminho JVM um pouco diferente (observe a pasta jre ausente no caminho, em comparação com as instruções das versões anteriores do Java):

     sudo ln -f -s $(/usr/libexec/java_home)/lib/server/libjvm.dylib /usr/local/lib 

    Você também precisa notificar R sobre a JVM:

     ln -s /usr/local/lib/libjvm.dylib /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/ 

    Foi assim que o configurei funcionando corretamente em dois Macs rodando o Mac OS X El Capitan (10.11.6):

    1. Desinstale o ‘rJava’ emitindo os seguintes comandos em uma janela de terminal:

       Rscript -e 'remove.packages("rJava")' sudo Rscript -e 'remove.packages("rJava")' 
    2. Faça o download e instale o software Java da Oracle: https://www.java.com/en/download/mac_download.jsp

    3. Adicione as seguintes linhas a /Users//.bashrc usando seu editor favorito:

       # Set JAVA_HOME so rJava package can find it export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)/jre 
    4. Feche e reinicie todas as janelas do terminal, R e RStudio (para selecionar as alterações para .bashrc ).

    5. Execute o seguinte comando em uma janela do Terminal:

       sudo ln -sf $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib 
    6. Execute o seguinte comando em uma janela do Terminal:

       sudo Rscript -e 'install.packages("rJava", repos="http://rforge.net", type="source")' 

    Você deve ser capaz de usar o CRAN rJava, sem precisar recompilar o rJava ou fazer quaisquer etapas adicionais, vinculando a biblioteca compartilhada ao diretório da biblioteca de estruturas R.

     sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /Library/Frameworks/R.framework/Libraries 

    Aqui estão os passos fáceis para isso:

    1. remova o pacote rJava: remove.packages (rJava)
    2. mais perto
    3. instalar o mais recente Java em você mac
    4. Abra o terminal e digite este comando: sudo R CMD javareconf
    5. Abra R e instale o rJava com este comando:

      install.packages (“rJava”, dependencies = TRUE, type = “source”)

    O problema de imagem não encontrada existe com uma nova instalação no OSX High Sierra com o mais recente Java SE 10 JDK.

    Consegui resolver o problema do caminho com rJava usando a correção encontrada na página de problemas do rJava Github: https://github.com/su/rJava/issues/78

    R CMD javareconf JAVA_CPPFLAGS = -I / Sistema / Biblioteca / Frameworks / JavaVM.framework / Cabeçalhos

    Aqui o que funcionou para mim no MAC:

    1. em seu ~/.profile ou ~/.bashrc adicione esta linha: %export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home

      1,1 % source .profile (ou % source .bashrc )

    2. % sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
    3. remove.packages(rJava)
    4. remove.packages(Rweka)
    5. Do terminal, digite este comando: %sudo R CMD javareconf
    6. install.packages("rJava", dependencies = TRUE, type = "source")
    7. install.packages("rJava", dependencies = TRUE, type = "source")
    8. Carregue sua library("rJava", "RWeka")

    Boa sorte.

    Talvez outra resposta simples que não toque no seu sistema de arquivos:

    $ install_name_tool -add_rpath /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/server /Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so

    (Substitua jdk1.8.0_131.jdk pelo caminho do JDK.)

    Verifique a localização do arquivo libjvm.dylib.

    Tente isso, no meu caso isso funcionou:

     dyn.load('/Library/Java/JavaVirtualMachines/jdk-10.jdk/Contents/Home/lib/server/libjvm.dylib') library(rJava) 

    Aqui você pode baixar o legado do Java versão 6 para El Capitan: https://support.apple.com/kb/DL1572?viewlocale=en_US&locale=en_US Depois de fazer isso, o pacote rJava funciona para mim.

    Execute o seguinte na linha de comando: sudo R CMD javareconf

    Várias soluções acima mencionaram isso, mas elas também sugerem que uma delas remova e subseqüentemente reinstale o pacote rJava . Eu achei essas etapas adicionais desnecessárias.

    Esta linha abaixo resolveu o mesmo problema que eu estava tendo com o pacote rJava como alguns outros nesta discussão fizeram. Tenho certeza de que há mais de uma solução para esse problema e agradeço sinceramente a todos por suas contribuições, porque às vezes uma linha como essa abaixo economiza muito tempo indo para o lixo!

     sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib