Recentemente, "atualizei" o OSX Mountain Lion para Yosemite e o 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 precisava instalar o Java 6. Além disso, o carregamento rJava
ou qualquer pacote que depende do rJava (por exemplo, xlsx
) causou uma falha no RStudio (o R também travou quando 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 rJava
ou qualquer pacote que depende rJava
não causa mais a falha do R, 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 chamar R na linha de comando e carregar rJava
ou qualquer pacote que dependa rJava
, ele parece funcionar (ou pelo menos não recebo nenhuma mensagem de erro).
Eu tentei várias tentativas diferentes de correção, algumas delas algumas vezes, e não consigo me lembrar exatamente o que 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:
Adicionado o seguinte ao meu
.bash_profile
(por esta resposta do SO ):exportar JAVA_HOME = "/ usr / libexec / java_home -v 1.8"
exportar LD_LIBRARY_PATH = $ JAVA_HOME / jre / lib / serverJava reconfigurado a partir da linha de comando da seguinte maneira:
sudo R CMD javareconf -n
Verificado
options("java.home")
e descoberto, isso foi definido comoNULL
. Tentei defini-lo da seguinte forma (por esta pergunta SO ):opções ("java.home" = "/ Biblioteca / Java / JavaVirtualMachines / jdk1.8.0_45.jdk / Conteúdo / Home / jre")
Instalei o Java Development Kit mais recente e reinstalei
rJava
da fonte (não lembro onde encontrei esse).
Em algum momento ao tentar tudo isso, eu consegui carregar rJava
sem travar o R, mas recebi a mensagem de erro postada acima. Além disso, quando eu saía do RStudio, ele parecia fechar normalmente, mas uma mensagem "RStudio fecha inesperadamente" seria exibida, indicando que o programa travou ao tentar fechar.
Finalmente, decidi instalar o Java para OS X 2014-001 (Java 6), pois parecia estar ficando sem opções. Agora, quando abri o R ou o RStudio, a mensagem pop-up "Este software precisa do Java 6" não apareceu mais. No entanto, eu ainda estava recebendo a .onLoad failed in loadNamespace() for 'rJava'
mensagem de erro postada acima.
Ao revisar algumas das postagens que eu já havia examinado, notei outra resposta do SO que eu havia perdido antes, que recomendava abrir o RStudio com o seguinte código de linha de comando que fornece ao RStudio o caminho correto para java:
LD_LIBRARY_PATH = $ (/ usr / libexec / java_home) / jre / lib / servidor: aberto -a RStudio
Isso abriu uma janela do RStudio e eu também pude carregar rJava
e pacotes que dependem dela sem obter nenhum erro.
Por fim, tentei executar o R na linha de comando (o que não havia feito antes). Acontece que, na linha de comando, no carregamento rJava
ou em qualquer pacote que dependa de rJava
obras e não gera erros.
Portanto, agora posso começar rJava
a trabalhar se abrir o RStudio na linha de comando com o código que fornece ao RStudio o caminho java (como observado acima). No entanto, eu gostaria de encontrar uma maneira de corrigir o problema subjacente, qualquer que seja, para que o RStudio possa ser aberto da maneira usual do Mac, sem a necessidade de um kludge na linha de comando. Também estou preocupado que a instalação de uma versão antiga do Java possa causar problemas no futuro.
Alguém tem alguma idéia sobre como diagnosticar e resolver esse problema?
Yosemite
, então não tenho certeza. Veja abaixo uma resposta relacionada a El Capitan
.
El Capitan
solução abaixo é útil assim que a RStudio
carga rJava
é esperada.
otool -L /Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so
obter uma lista das bibliotecas compartilhadas e como elas são resolvidas. Não sei como descobrir o conteúdo do tempo de execução @rpath
.
LD_LIBRARY_PATH=$(/usr/libexec/java_home)/jre/lib/server: open -a RStudio
truque, mas ele não funciona mais. Eu escrevi uma postagem no blog sobre esse problema e descrevi esse problema lá. Gostaria de saber se outras pessoas também enfrentam esse problema nessa configuração ou se a culpa é minha.