Problemy podczas próby załadowania pakietu w R z powodu rJava

93

Kiedy piszę require(xlsx), aby załadować paczkę xlsxw R, pojawiają się następujące komunikaty:

> require(xlsx)
Loading required package: xlsx
Loading required package: xlsxjars
Loading required package: rJava
Error : .onLoad failed in loadNamespace() for 'rJava', details:
  call: fun(libname, pkgname)
  error: JAVA_HOME cannot be determined from the Registry
Failed with error:  ‘package ‘rJava’ could not be loaded’

Próbowałem też rJavaręcznie załadować pakiet, ale otrzymałem ten komunikat o błędzie:

require(rJava)
Loading required package: rJava
Error : .onLoad failed in loadNamespace() for 'rJava', details:
  call: fun(libname, pkgname)
  error: No CurrentVersion entry in Software/JavaSoft registry! Try re-installing Java and make sure R and Java have matching architectures.

Czy masz jakieś sugestie, jak rozwiązać problem?

Pritam Kar
źródło
4
Spróbuj zainstalować rJava... Przeczytaj to
agstudy
6
Która platforma? W przypadku systemu Windows może to być pomocne.
dardisco
Twój problem pozwala ci najpierw zapisać plik .xlsx do csv, a następnie użyć read.csv, zamiast próbować czytać w pliku
.xlsx
2
Jeśli ostatnia wymieniona odpowiedź (w tym momencie 16 głosów) rozwiązała problem, oznacz odpowiedź jako zaakceptowaną.
Slak
Natknąłem się również na ten problem, ale odwróciłem go, używając readxlpakietu Hadley Wickham . Więcej dyskusji na ten temat tutaj - nie można zainstalować bibliotekixlsx w r i szukać alternatywy
Ben

Odpowiedzi:

125

Przyczyna jest prawdopodobnie związana z faktem, że używasz 64-bitowej wersji systemu operacyjnego i R, ale nie masz zainstalowanej Javy z tą samą architekturą. Musisz pobrać 64-bitową Javę z tej strony: https://www.java.com/en/download/manual.jsp

Następnie spróbuj ponownie załadować xlsxpakiet. Nie powinieneś ponownie uruchamiać R.

Gianluca
źródło
2
(+1) Nie jestem pewien, czy komunikat R całkowicie wskazuje na ten problem, ale tak było w moim przypadku! Dla pewności możesz sprawdzić. Jeśli używasz 64-bitowego systemu operacyjnego i 64-bitowego R, uruchom wiersz poleceń i spróbuj java -d64 version. Jeśli masz działającą 64-bitową Javę, może to być problem ze ścieżką systemową.
AdamO
3
Czy miałeś na myśli java -d64 -version?
Harrison
8

Dzieje się tak, ponieważ na komputerze brakuje jednej z wersji Java (32-bitowej / 64-bitowej). Spróbuj zainstalować oba Jdks i uruchom kod.
Po zainstalowaniu Jdks otwórz R i wpisz kod

system("java -version")

To da ci zainstalowaną wersję Jdk. Następnie spróbuj załadować pakiet rJava. To zadziałało dla mnie.

Edwin Vivek N
źródło
8

Miałem podobny problem, który działał u mnie, to ustawienie JAVA_HOME. Najpierw zmęczyłem się w R:

Sys.setenv(JAVA_HOME = "C:/Program Files/Java/jdk1.8.0_101/")

A kiedy to faktycznie zadziałało, ustawiłem go we Właściwościach systemu -> Zaawansowane -> Zmienne środowiskowe, dodając nową zmienną systemową. Następnie ponownie uruchomiłem R / RStudio i wszystko działało.

Lauren Fitch
źródło
4

Miałem podobny problem. Jest to spowodowane zależnym pakietem „rJava”. Ten problem można rozwiązać, przekierowując R, aby używał innego JAVA_HOME.

if(Sys.getenv("JAVA_HOME")!=""){
    Sys.setenv(JAVA_HOME="")
}
library(rJava)

To zadziałało dla mnie.

Arul Samuel Rajkumar
źródło
4

Jeśli masz ten błąd w RStudio, użyj powyższego kodu środowiskowego Lauren i zmień wersję R na wersję 32-bitową w Narzędziach, Opcje globalne. Jeśli masz nowszą wersję, powinny być dostępne zarówno opcje 32-bitowe, jak i 64-bitowe R. Będzie to wymagało ponownego uruchomienia R i ograniczy opcje pamięci. Instalacja 64-bitowej wersji jre nie będzie jednak wymagana.

Odyseusz Itaka
źródło
2

Alternatywnym pakietem, którego możesz użyć, jest readxl . Ten pakiet nie wymaga zewnętrznych zależności.

Cristóbal Alcázar
źródło
2

Myślę, że znalazłem rozwiązanie, ponieważ miałem ten sam problem!

Moja poprawka polegała na zainstalowaniu zarówno 32-bitowego, jak i 64-bitowego środowiska JRE (Java Runtime Environment) w wersji 8 z aktualizacją 181 (potrzebuję wersji 32-bitowej dla innej aplikacji, ale twoja poprawka może po prostu ponownie zainstalować 64-bitową samodzielnie).

Tamas
źródło
1

Odpowiedź w linku rozwiązała mój problem.

Przed rozwiązaniem próbowałem, dodając JAVA_HOME do środowisk Windows. Rozwiązał ten błąd, ale stworzył inny problem. Rozwiązanie w powyższym linku rozwiązuje ten problem bez tworzenia dodatkowych problemów.

Orhan Celik
źródło