Saya baru-baru ini "meningkatkan" dari OSX Mountain Lion ke Yosemite dan dari R 3.1.3 ke 3.2. Segera setelah upgrade, ketika saya membuka R atau RStudio saya mendapat pesan pop-up yang mengatakan bahwa saya perlu menginstal Java 6. Selain itu, memuat rJava
atau paket apa pun yang bergantung pada rJava (misalnya, xlsx
) menyebabkan RStudio crash (R juga crash ketika saya mencoba ini dengan membuka R.app
secara langsung).
Setelah mencoba beberapa perbaikan yang ditemukan di Stack Overflow dan di tempat lain (lebih detail di bawah), saya berada pada titik di mana memuat rJava
atau paket apa pun yang bergantung rJava
tidak lagi menyebabkan R macet, tetapi menghasilkan kesalahan berikut:
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’
Namun, jika saya memanggil R dari baris perintah dan kemudian memuat rJava
atau paket apa pun yang bergantung rJava
padanya, tampaknya berfungsi (atau setidaknya saya tidak mendapatkan pesan kesalahan).
Saya telah mencoba sejumlah perbaikan percobaan yang berbeda, beberapa di antaranya beberapa kali, dan tidak dapat mengingat dengan tepat apa yang saya lakukan dalam urutan apa (tidak menyadari ini akan menjadi seperti rawa dan tidak benar-benar melacak) , tapi inilah intinya:
Menambahkan yang berikut ke saya
.bash_profile
(per jawaban SO ini ):ekspor JAVA_HOME = "/ usr / libexec / java_home -v 1.8"
ekspor LD_LIBRARY_PATH = $ JAVA_HOME / jre / lib / serverJava dikonfigurasi ulang dari baris perintah sebagai berikut:
sudo R CMD javareconf -n
Memeriksa
options("java.home")
dan menemukan ini disetel keNULL
. Saya mencoba mengaturnya ke yang berikut (per pertanyaan SO ini ):options ("java.home" = "/ Library / Java / JavaVirtualMachines / jdk1.8.0_45.jdk / Contents / Home / jre")
Menginstal Java Development Kit terbaru dan menginstal ulang
rJava
dari sumber (tidak dapat mengingat di mana saya menemukannya).
Pada titik tertentu ketika mencoba semua ini, saya dapat memuat rJava
tanpa menabrak R, tetapi malah mendapat pesan kesalahan yang diposting di atas. Selain itu, ketika saya keluar dari RStudio, tampaknya akan menutup secara normal, tetapi kemudian pesan "RStudio berhenti tiba-tiba" akan muncul, menunjukkan bahwa program macet saat mencoba menutup.
Saya akhirnya memutuskan untuk menginstal Java untuk OS X 2014-001 (Java 6), karena sepertinya saya kehabisan pilihan. Sekarang, ketika saya membuka R atau RStudio, pesan pop-up "Perangkat lunak ini membutuhkan Java 6" tidak lagi muncul. Namun, saya masih mendapatkan .onLoad failed in loadNamespace() for 'rJava'
pesan kesalahan yang diposting di atas.
Dalam meninjau beberapa posting yang sudah saya lihat, saya melihat jawaban SO lain yang saya lewatkan sebelumnya, yang merekomendasikan membuka RStudio dengan kode baris perintah berikut yang memberi RStudio jalur yang benar ke java:
LD_LIBRARY_PATH = $ (/ usr / libexec / java_home) / jre / lib / server: buka -a RStudio
Itu membuka jendela RStudio dan saya juga dapat memuat rJava
dan paket yang bergantung padanya tanpa mendapatkan kesalahan.
Terakhir, saya mencoba menjalankan R dari baris perintah (yang belum pernah saya lakukan sebelumnya). Ternyata pada baris perintah, memuat rJava
atau paket apa pun yang bergantung pada rJava
pekerjaan dan tidak menimbulkan kesalahan apa pun.
Jadi, sekarang saya bisa mulai rJava
bekerja jika saya membuka RStudio dari baris perintah dengan kode yang memberikan RStudio jalur java (seperti disebutkan di atas). Namun, saya ingin menemukan cara untuk memperbaiki masalah yang mendasarinya, apa pun itu, sehingga RStudio dapat dibuka dengan cara Mac biasa, tanpa memerlukan baris perintah kludge. Saya juga khawatir bahwa menginstal Java versi lama dapat menyebabkan masalah di masa mendatang.
Adakah yang punya ide tentang cara mendiagnosis dan menyelesaikan masalah ini?
Yosemite
, jadi saya tidak yakin. Lihat di bawah untuk jawaban yang terkait dengan El Capitan
.
El Capitan
solusi di bawah ini adalah membantu segera setelah RStudio
beban rJava
seperti yang diharapkan.
otool -L /Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so
dapatkan daftar pustaka bersama dan cara menyelesaikannya. Saya tidak yakin bagaimana menemukan konten runtime @rpath
.
LD_LIBRARY_PATH=$(/usr/libexec/java_home)/jre/lib/server: open -a RStudio
trik, tetapi itu tidak berfungsi lagi. Saya telah menulis entri blog tentang masalah ini dan menjelaskan masalah ini di sana. Saya ingin tahu apakah orang lain mengalami masalah ini juga dalam konfigurasi ini atau apakah itu kesalahan saya.