R: falha na instalação do pacote rJava

116

Ao instalar o rJava usando o install.packages("rJava")comando, recebo o seguinte erro:

checking Java support in R... present:
interpreter : '/usr/bin/java'
archiver    : '/usr/bin/jar'
compiler    : '/usr/bin/javac'
header prep.: '/usr/bin/javah'
cpp flags   : '-I/usr/lib/jvm/java-6-sun-1.6.0.20/jre/../include -I/usr/lib/jvm/java-6-sun-1.6.0.20/jre/../include/linux'
java libs   : '-L/usr/lib/jvm/java-6-sun-1.6.0.20/jre/lib/amd64/server -L/usr/lib/jvm/java-6-sun-1.6.0.20/jre/lib/amd64 -L/usr/lib/jvm/java-6-sun-1.6.0.20/jre/../lib/amd64 -L -L/usr/java/packages/lib/amd64 -L/usr/lib64 -L/lib64 -L/lib -L/usr/lib -ljvm'
checking whether JNI programs can be compiled... yes
checking JNI data types... configure: error: One or more JNI types differ from the corresponding native type. You may need to use non-standard compiler flags or a different compiler in order to fix this.
ERROR: configuration failed for package ‘rJava’

Tenho o Java JDK instalado e java -versionretorna o seguinte:

$ java -version
java version "1.6.0_20"
Java(TM) SE Runtime Environment (build 1.6.0_20-b02)

Ao pesquisar o erro no Google, vejo que outras pessoas estão tendo o mesmo problema, mas não encontram uma solução diferente de "instalar o JDK inteiro, não apenas o JRE", o que eu fiz.

A outra coisa que li foi executar, sudo R CMD javareconfque funciona bem e sem erros.

Alguma ideia de qual é o meu problema?

[[EDIT]] Já se passaram alguns meses desde que tive esse problema. Inicialmente, resolvi isso editando meus caminhos Java, conforme ilustrado na resposta que postei abaixo. Recentemente, tive o mesmo problema em uma nova instalação do Ubuntu. Tentei a recomendação de Dirk para usar apt-get para instalar o pacote rJava. Funcionou perfeitamente. O que não percebi inicialmente é que instalar pacotes usando o método apt-get do Ubuntu é fundamentalmente diferente de apenas carregar o mesmo pacote usando install.packages () dentro de R. Os pacotes do Ubuntu resolvem alguns problemas que eu não percebi ou apreciei .

JD Long
fonte
a resposta também pode ser encontrada aqui - stackoverflow.com/questions/12872699/…
Tejus Prasad
1
Apenas fazendo um comentário aqui para o meu futuro eu (para quando, sem dúvida, me encontrar de volta a esta questão) que eu precisava executar sudo R CMD javareconf para fazer com que o apt-get install fosse reconhecido por meu servidor rstudio.
Jim Crozier
2
Nove anos depois e este é um problema sem fim. Eu me deparo com isso toda vez que faço uma nova instalação do R. Algo muda .. SO, versão Rstudio, versão R, versão java, jdk, jre, jvm .... E é sempre uma nova solução para resolver isso. É ridículo eu não conseguir ler um arquivo excel sem toda essa besteira.
rmf
@rmf agora existem vários pacotes de leitura do Excel que não requerem Java. Gosto de leituras simples, readxlmas prefiro escrever de volta no Excel openxlsx. Nenhum requer rJava.
JD Long de

Respostas:

114

Não iria

apt-get install r-cran-rjava

tem sido mais fácil? Você poderia ter me perguntado em useR! :)

Dirk Eddelbuettel
fonte
3
O ponto do Ubuntu e do Debian é que você não deve ter que procurar no Google em primeiro lugar --- ele deve "apenas funcionar" usando os pacotes apropriados. Facilite sua vida e use pacotes onde puder. Presumo que você também tenha usado os pacotes Java do Ubuntu?
Dirk Eddelbuettel
16
Dirk, você faz essas perguntas como se eu tivesse alguma ideia do que diabos eu fiz. Se bem me lembro, tive problemas para instalar o Java usando apt-get, então criei a partir do código-fonte e essa é provavelmente a fonte (todos os trocadilhos pretendidos) dos meus problemas. Claro que pode ser apenas carma ruim.
JD Long
2
Estou em R 2.15.3 ubuntu 12.04.2 64 bits. quando eu update.packages()recebo, noto que há um rJava update. A instalação de dentro de R falha. Quando eu apt-get install r-cran-rjavanão há atualização disponível. Por que isso está acontecendo?
ECII
1
@DirkEddelbuettel, No meu Red Hat 'sudo yum install r-cran-rjava' não está funcionando. Diz plugins carregados: rhnplugin Este sistema está recebendo atualizações do RHN Classic ou RHN Satellite. Configurando o processo de instalação Nenhum pacote r-cran-rjava disponível.
BigDataScientist
1
@DirkEddelbuettel, enquanto a abordagem 'deve funcionar' parece ótima para mim, o fato de que apenas tantos pacotes estão listados em r-cran-x é o motivo pelo qual as pessoas usam a forma R 'normal' (install.packages). Além disso, acabei de seguir seu conselho sobre fazer isso através do cran, o que realmente não ajuda, já que o R 3.x é o mainstream agora, enquanto os pacotes no r-cran- são aparentemente anteriores ao R 3.x
Richard
77

Acontece que meu problema era um problema com minha JAVA_HOMEvariável de ambiente. Sim, chocante eu sei. Minha configuração inicial para PATHe JAVA_HOMEparecia com esta:

export JAVA_HOME=/usr/lib/jvm/java-6-sun
export PATH=$PATH:$JAVA_HOME/bin

E eu adicionei /jreentão agora se parece com isto:

export JAVA_HOME=/usr/lib/jvm/java-6-sun/jre
export PATH=$PATH:$JAVA_HOME/bin

Tudo em Java parecia funcionar bem sem o, /jremas o rJava não. Ímpar.

JD Long
fonte
5
Mantendo o verdadeiro significado de "estouro de pilha", criando um loop infinito de perguntas -> respostas - eu gosto.
DrewConway
10
Obrigado. Fazendo minha parte para garantir que futuros usuários do Google possam encontrar respostas para suas perguntas R!
JD Long
11
Depois de modificar JAVA_HOME e o caminho para o executável java, descobri que preciso executar R CMD javareconf. Caso contrário, o processo de instalação do rJava ainda vê os locais antigos de cabeçalhos e bibliotecas, etc.
Carlos Macasaet
1
Nada funcionou para mim. Estou tentando instalar "rJava" no servidor Red Hat Linux onde estou servindo alguns aplicativos R Shiny. Estou recebendo o seguinte ERRO: falha na configuração do pacote 'rJava' * removendo '/ usr / lib64 / R / library / rJava'. Eu executei as seguintes etapas no processo de eliminação do erro. 1. Atualizado Java no Linux sudo yum install java-1.7.0-openjdk 2. Defina o HOME e PATH export JAVA_HOME = / usr / lib / jvm / java-1.7.0-ibm-1.7.0.6.1.x86_64 / jre export PATH = $ PATH: $ JAVA_HOME / bin 3. Java sudo / usr / bin / R CMD reconfigurado javareconf
BigDataScientist
Sim, funciona, usei a 8-oracleversão.
gunzapper
21

Obrigado - sua sugestão sobre $JAVA_HOMEme leva a uma solução semelhante:

prompt$ unset JAVA_HOME

antes de invocar R.

Chris Pudney
fonte
1
não definido JAVA_HOME (sem cifrão)
Vladtn
1
Sim, isso resolveu meu problema. Você pode explicar por quê? Obrigado
MichaelZ
desmarque JAVA_HOME e defina CLASSPATH = $ CLASSPATH: / usr / lib64 / R / share / java
42n4
14

É assim que eu faço funcionar:

No Linux (Ubuntu 16.04)

sudo apt-get install default-jre
sudo apt-get install default-jdk
sudo R CMD javareconf

em R:

install.packages("rJava")
Jim Chen
fonte
1
obrigado ... Eu precisava instalar algo chamado rcdk no R que caiu porque o java não funcionou. Sua solução
alternativa
Fico muito feliz em ajudar!
Jim Chen
11

Isso funcionou para mim no Ubuntu 12.04 e R versão 3.0

cd /usr/lib/jvm/java-6-sun-1.6.0.26/include

este é o diretório que contém jni.h

Em seguida, crie um link simbólico para outro arquivo de cabeçalho necessário (estou com preguiça de descobrir como incluir mais de um diretório na opção JAVA_CPPFLAGS abaixo):

sudo ln -s linux/jni_md.h .

Finalmente

sudo R CMD javareconf JAVA_CPPFLAGS=-I/usr/lib/jvm/java-6-sun-1.6.0.26/include
KevinH
fonte
1
sudo R CMD javareconf JAVA_CPPFLAGS=-I/usr/lib/jvm/java-6-sun-1.6.0.26/includeresolveu o problema para mim.
Moustafa Alzantot
… E acrescentaria echo $JAVA_HOMEcaso java-6-sunnão seja o seu diretório exato.
isomorfismos
7

abaixo está uma das minhas respostas em outro pós - erro: não foi possível carregar os pacotes instalados agora
(isso também é relevante para esta questão)

Para usuários do Linux (Ubuntu): Se você tiver oracle-java (7/8) instalado. Estará neste local /usr/lib/jvme o sudoacesso é necessário.

Crie o arquivo /etc/ld.so.conf.d/java.confcom as seguintes entradas:

/usr/lib/jvm/java-8-oracle/jre/lib/amd64
/usr/lib/jvm/java-8-oracle/jre/lib/amd64/server

(Substitua java-8-oracle por java-7-oracle dependendo da sua versão java)

Então:

sudo ldconfig

Reinicie o RStudio e instale o pacote rJava.

Tejus Prasad
fonte
1
Eu tentei várias soluções com vários graus de sucesso, mas esta é a primeira solução que encontrei que parece ser resiliente (ou seja, não requer que as mesmas 5 etapas sejam repetidas toda vez que eu iniciar o R).
SamWN
4

Rodando R no Gentoo em um AMD64. Eu atualizei para R 2.12.0

R versão 2.12.0 (2010-10-15) Copyright (C) 2010 The R Foundation for Statistical Computing ISBN 3-900051-07-0 Plataforma: x86_64-pc-linux-gnu (64 bits) e aquelas mensagens incômodas foram longe.

Jan Vandermeer

Jan Vandermeer
fonte
2

Tentei instalar o openjdk-7- * mas ainda tive problemas ao instalar o rJava. Depois que reiniciei meu computador, não houve nenhum problema.

tão

sudo apt-get install openjdk-7-*


RESTART after installing java, then try to install package "rJava" in R
Vahid Mirjalili
fonte
2

O pacote rJava procura a /usr/lib/jvm/default-java/pasta. Mas não está disponível como padrão. Esta pasta possui um link simbólico para o java padrão configurado para o sistema.

Para ativar o java padrão, instale os seguintes pacotes:

sudo apt-get install default-jre default-jre-headless

Testado no ubuntu 17.04 com CRAN R 3.4.1

Gustavo Garcia
fonte
2

O que funcionou para mim foi mudar JAVA_HOME do arquivo /usr/lib/R/etc/javaconf

Eu primeiro verificado que era a minha versão do Java habilitado: sudo update-alternatives --config java. No meu caso foijava-8-oracle

Abri o arquivo /usr/lib/R/etc/javaconfe substituí-o default-javapor java-8-oracle:

${JAVA_HOME=/usr/lib/jvm/default-java}

substituído por :

${JAVA_HOME=/usr/lib/jvm/java-8-oracle}

E depois sudo R CMD javareconf

Reiniciei o RStudio e pude instalar o rJava.

Kevin Zarca
fonte
1

o que eu faço é aqui:

  1. em /etc/apt/sources.list, adicione:

    deb http://ftp.de.debian.org/debian sid main

Nota: o rjava deve ser a versão mais recente

2 execute: sudo apt-get update sudo apt-get install r-cran-rjava

Depois de atualizar a versão antiga do rjava, pode instalar o rhdfs_1.0.8.

user3119404
fonte
1

Eu estava enfrentando o mesmo problema ao usar o Windows 10. Eu resolvi o problema usando o seguinte procedimento

  1. Baixe o Java em https://java.com/en/download/windows-64bit.jsp para janelas de 64 bits \ Instale-o
  2. Baixe o kit de desenvolvimento Java em https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html para janelas de 64 bits \ Instale-o
  3. Em seguida, clique com o botão direito do mouse no ícone “Este PC” na área de trabalho \ Propriedades \ Configurações avançadas do sistema \ Avançado \ Variáveis ​​de ambiente \ Em Variáveis ​​do sistema, selecione Caminho \ Clique em Editar \ Clique em Novo \ Copiar e colar os caminhos “C: \ Arquivos de programas \ Java \ jdk1 .8.0_201 \ bin ”e“ C: \ Arquivos de programas \ Java \ jre1.8.0_201 \ bin ”(sem citação) \ OK \ OK \ OK

Nota : jdk1.8.0_201 e jre1.8.0_201 serão alterados dependendo da versão do kit de desenvolvimento Java e Java

  1. Na janela Variáveis ​​de ambiente, vá para Variáveis ​​de usuário para Usuário \ Clique em Novo \ Coloque o nome da variável como “JAVA_HOME” e o valor da variável como “C: \ Arquivos de programas \ Java \ jdk1.8.0_201 \ bin” \ Pressione OK

Para verificar a instalação, abra CMD \ Digite javac \ Pressione Enter e digite java \ pressione Enter Será exibido insira a descrição da imagem aqui

No RStudio execute

Sys.setenv(JAVA_HOME="C:\\Program Files\\Java\\jdk1.8.0_201")

Nota : jdk1.8.0_201 será alterado dependendo da versão do kit de desenvolvimento Java

Agora você pode instalar e carregar o pacote rJava sem nenhum problema.

Bappa Das
fonte
0

O problema era que o rJava não instala em RStudio( Version 1.0.136). O seguinte funcionou para mim ( macOS Sierra version 10.12.6) (encontrado aqui ):

Passo 1: Baixe e instale javaforosx.dmga partir daqui

Etapa 2: Em seguida, execute o comando de dentro do RStudio:

install.packages("rJava", type = 'source')
Nilesh Ingle
fonte
-2

Encontrei um problema semelhante no Ubuntu 16.04 e fui capaz de resolvê-lo criando uma pasta chamada "default-java" /usr/lib/jvme copiando para dentro dela todo o conteúdo do /usr/lib/jvm/java-8-oracle. Optei por esta solução, pois corrigir a variável de ambiente JAVA_HOME acabou sendo inútil.

ilya_kuzminov
fonte
1
Isso interromperá a default-jreinstalação do pacote.
Gustavo Garcia