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?
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.Yosemite
, jadi saya tidak yakin. Lihat di bawah untuk jawaban yang terkait denganEl Capitan
.El Capitan
solusi di bawah ini adalah membantu segera setelahRStudio
bebanrJava
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
.Jawaban:
Saya memiliki masalah yang sama dan melakukan langkah yang sama dengan Anda. Langkah terakhir untuk memungkinkan memulai RStudio melalui Finder / Spotlight adalah menautkan libjvm.dylib ke / usr / local / lib:
-f
bendera ditambahkan untuk memaksa menimpa file / tautan yang adasumber
cannot jfindclass[[1]]
yang mungkin berasal dari rJava dan driver JDBC/usr/local/lib/libjvm.dylib
file, karena / usr / local / lib / sepertinya tidak ada di @rpath. Misalnya:ln -s /usr/local/lib/libjvm.dylib /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/
Di OSX El Capitan 10.11, pengguna tidak memiliki izin untuk menulis ke / usr / lib. Jadi, gunakan perintah berikut:
sumber
Anda dapat memuat libjvm.dylib secara eksplisit, dengan menjalankan seperti
sumber
+1
untuk menawarkan alternatif.Di macOS High Sierra (10.13.1) dan Java Versi 9 Anda harus menggunakan jalur JVM yang sedikit berbeda (perhatikan
jre
folder yang hilang di jalur tersebut dibandingkan dengan petunjuk untuk versi Java sebelumnya):Anda juga harus memberi tahu R tentang JVM:
sumber
Perintah berikut berfungsi:
Setelah itu, di RStudio, memuat rJava bekerja melalui pemuatan paket "xlsx".
PS # 1 Lingkungan: Mac OS X El Capitan 10.11.3+ dengan RStudio 0.99.491+ dan R 3.2.3+. (Saya sekarang telah menguji ini juga di macOS Sierra (10.12) dan R.3.3.1.)
PS # 2 Saya menemukan itu
openxlsx
jauh lebih cepat dan tidak bergantung pada Java untuk bekerja, jadi saya sekarang menggunakan paket itu. Harapan yang membantu orang lain.sumber
openxlsx
FTW!openxlsx
saja.Anda harus dapat menggunakan CRAN rJava, tanpa perlu mengkompilasi ulang rJava atau melakukan langkah tambahan apa pun dengan menautkan pustaka bersama ke direktori pustaka kerangka kerja R.
sumber
Beginilah cara saya mengonfigurasinya berfungsi dengan baik pada dua Mac yang menjalankan Mac OS X El Capitan (10.11.6):
Copot pemasangan 'rJava' dengan mengeluarkan perintah berikut di jendela terminal:
Unduh dan instal perangkat lunak Java dari Oracle: https://www.java.com/en/download/mac_download.jsp
Tambahkan baris berikut untuk
/Users/<userid>/.bashrc
menggunakan editor favorit Anda:Tutup dan mulai ulang terminal mana pun, jendela R, dan RStudio (untuk melihat perubahannya
.bashrc
).Jalankan perintah berikut di jendela Terminal:
Jalankan perintah berikut di jendela Terminal:
sumber
Berikut langkah-langkah mudahnya:
Buka R dan instal rJava dengan perintah ini:
install.packages ("rJava", dependencies = TRUE, type = "source")
sumber
libjvm.dylib
dalam/usr/local/lib
membuatnya juga mulai :)Masalah gambar tidak ditemukan ada dengan penginstalan baru di OSX High Sierra dengan Java SE 10 JDK terbaru.
Saya dapat menyelesaikan masalah jalur dengan rJava menggunakan perbaikan yang ditemukan di halaman masalah rJava Github: https://github.com/su/rJava/issues/78
R CMD javareconf JAVA_CPPFLAGS = -I / System / Library / Frameworks / JavaVM.framework / Headers
sumber
Inilah yang berhasil untuk saya di MAC:
di Anda
~/.profile
atau~/.bashrc
tambahkan baris ini:%export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home
1.1
% source .profile
(atau% 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")
Semoga berhasil.
sumber
Mungkin jawaban sederhana lain yang tidak menyentuh sistem file Anda:
$ 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
(Gantikan
jdk1.8.0_131.jdk
dengan jalur JDK Anda.)sumber
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
. Saya dapat melihat bahwa jalan setapak itu hilang denganotool -l /usr/local/lib/R/3.3/site-library/rJava/libs/rJava.so | grep LC_RPATH
Periksa lokasi file libjvm.dylib.
Coba ini, dalam kasus saya ini berhasil:
sumber
Saya melalui semua pemecahan masalah yang dapat saya temukan, kemudian menginstal jdk-11.0.1_osx-x64_bin.dmg dari: unduhan Oracle
Semuanya bekerja dengan sempurna setelah itu.
Periksa versi library yang tidak dimuat saat Anda menjalankan library ('rJava') dan cocokkan dengan versi java yang perlu Anda instal.
sumber
Saya perhatikan bahwa 'rJava' cukup ketat tentang versi JDK saat memuat di Rstudio.
Dalam kasus saya (Mac OS. 10.14.6 - Mojave) saya telah menginstal jdk-13 yang diuji terhadap jdk-11.
Saya telah menautkan versi JDK saya ke direktori yang tidak ada yang dianggap valid oleh Rstudio (JDK 11):
dan ternyata itu bekerja seperti pesona ...
BTW., tidak ada masalah untuk menjalankan 'rJava' mengikuti petunjuk sebelumnya di asli R.
sumber
Di sini Anda dapat mengunduh Java versi 6 yang lama untuk El Capitan: https://support.apple.com/kb/DL1572?viewlocale=en_US&locale=en_US Setelah melakukannya, paket rJava berfungsi untuk saya.
sumber
Baris di bawah ini telah memecahkan masalah yang sama yang saya alami dengan
rJava
paket seperti yang dilakukan beberapa orang lain dalam diskusi ini. Saya yakin ada lebih dari satu solusi untuk masalah ini dan saya dengan tulus berterima kasih kepada mereka semua atas kontribusinya karena terkadang satu baris seperti di bawah ini menghemat banyak waktu untuk dibuang ke sampah!sumber
Jalankan perintah berikut pada baris perintah:
sudo R CMD javareconf
Beberapa solusi di atas telah menyebutkan ini, tetapi mereka juga menyarankan agar seseorang menghapus dan kemudian menginstal ulang
rJava
paket tersebut. Saya menemukan langkah-langkah tambahan itu tidak perlu.sumber
sudo R CMD javareconf
tetapilibrary(rJava)
masih memberikan kesalahan yang sama: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
Anda dapat mengubah referensi di R dengan menggunakan perintah berikut:
sumber