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?
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.Yosemite
, então não tenho certeza. Veja abaixo uma resposta relacionada aEl Capitan
.El Capitan
solução abaixo é útil assim que aRStudio
cargarJava
é 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
.Respostas:
Eu tive o mesmo problema e segui as mesmas etapas que você. A etapa final para permitir a inicialização do RStudio por meio do Finder / Spotlight foi vincular libjvm.dylib a / usr / local / lib:
-f
o sinalizador é adicionado para forçar a substituição do arquivo / link existentefonte
cannot jfindclass[[1]]
que pode vir de rJava e um driver JDBC/usr/local/lib/libjvm.dylib
arquivo, pois / usr / local / lib / não parece estar no @rpath. Por exemplo:ln -s /usr/local/lib/libjvm.dylib /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/
No OSX El Capitan 10.11, o usuário não tem permissão para gravar em / usr / lib. Então, em vez disso, use o seguinte comando:
fonte
Você pode carregar o libjvm.dylib explicitamente, executando como
fonte
+1
por oferecer uma alternativa.No macOS High Sierra (10.13.1) e no Java Versão 9, é necessário usar um caminho da JVM ligeiramente diferente (observe a
jre
pasta ausente no caminho em comparação com as instruções para versões anteriores do Java):Você também deve notificar R sobre a JVM:
fonte
O comando a seguir funciona:
Depois disso, no RStudio, o carregamento do rJava funciona através do carregamento do pacote "xlsx".
Ambiente PS # 1: Mac OS X El Capitan 10.11.3+ com RStudio 0.99.491+ e R 3.2.3+. (Agora também testei isso no macOS Sierra (10.12) e R.3.3.1.)
PS # 2 Acho que
openxlsx
é muito mais rápido e não depende do Java para funcionar, então agora estou usando esse pacote. Espero que ajude os outros.fonte
openxlsx
FTW!openxlsx
qualquer maneira.Você deve poder usar o CRAN rJava, sem precisar recompilar o rJava ou executar outras etapas vinculando a biblioteca compartilhada ao diretório da biblioteca de estruturas R.
fonte
Foi assim que eu o configurei funcionando corretamente em dois Macs executando o Mac OS X El Capitan (10.11.6):
Desinstale o 'rJava' emitindo os seguintes comandos em uma janela do terminal:
Faça o download e instale o software Java da Oracle: https://www.java.com/en/download/mac_download.jsp
Adicione as seguintes linhas ao
/Users/<userid>/.bashrc
uso do seu editor favorito:Feche e reinicie qualquer janela do terminal, R e RStudio (para pegar as alterações em
.bashrc
).Execute o seguinte comando em uma janela do Terminal:
Execute o seguinte comando em uma janela do Terminal:
fonte
Aqui estão as etapas fáceis para isso:
Abra R e instale o rJava com este comando:
install.packages ("rJava", dependências = TRUE, tipo = "source")
fonte
libjvm.dylib
dentro/usr/local/lib
tornou também começar :)O problema da imagem não encontrada existe com uma instalação totalmente nova no OSX High Sierra com o Java SE 10 JDK mais recente.
Consegui resolver o problema do caminho com o 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 / Headers
fonte
Aqui o que funcionou para mim no MAC:
no 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
)% sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
remove.packages(rJava)
remove.packages(Rweka)
%sudo R CMD javareconf
install.packages("rJava", dependencies = TRUE, type = "source")
install.packages("rJava", dependencies = TRUE, type = "source")
library("rJava", "RWeka")
Boa sorte.
fonte
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 seu caminho JDK.)fonte
install_name_tool -add_rpath /Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home/jre/lib/server /usr/local/lib/R/3.3/site-library/rJava/libs/rJava.so
. Eu era capaz de ver que o rpath estava faltando comotool -l /usr/local/lib/R/3.3/site-library/rJava/libs/rJava.so | grep LC_RPATH
Verifique a localização do arquivo libjvm.dylib.
Tente isso, no meu caso, isso funcionou:
fonte
Examinei toda a solução de problemas que pude encontrar e instalei o jdk-11.0.1_osx-x64_bin.dmg em: Oracle downloads
Tudo funcionou perfeitamente depois disso.
Verifique a versão da biblioteca que não foi carregada ao executar a biblioteca ('rJava') e faça a correspondência com a versão java que você precisa instalar.
fonte
Notei que 'rJava' é bastante rigoroso quanto à versão do JDK durante o carregamento no Rstudio.
No meu caso (Mac OS. 10.14.6 - Mojave), instalei o jdk-13, que foi testado contra o jdk-11.
Vinculei minha versão do JDK a um diretório inexistente que foi considerado válido pelo Rstudio (JDK 11):
e surpreendentemente ele funciona como um encanto ...
BTW., não havia nenhum problema para executar 'rJava' seguindo as instruções anteriores no R. nativo
fonte
Aqui você pode fazer o download da versão Java herdada 6 para El Capitan: https://support.apple.com/kb/DL1572?viewlocale=en_US&locale=en_US Depois disso, o pacote rJava funciona para mim.
fonte
Esta linha abaixo resolveu o mesmo problema que eu estava tendo com o
rJava
pacote, como alguns outros nesta discussão. Tenho certeza de que há mais de uma solução para este problema e agradeço sinceramente a todos por suas contribuições, porque às vezes uma linha como a abaixo economiza muito tempo indo para o lixo!fonte
Execute o seguinte na linha de comandos:
sudo R CMD javareconf
Várias soluções acima mencionaram isso, mas também sugerem que uma remova e reinstale o
rJava
pacote. Eu achei essas etapas adicionais desnecessárias.fonte
sudo R CMD javareconf
maslibrary(rJava)
ainda dá os mesmos erros:Error: package or namespace load failed for ‘rJava’: .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.5/Resources/library/rJava/libs/rJava.so': ... Reason: image not found
Você pode alterar a referência em R usando o seguinte comando:
fonte