OSX Yosemite "yükseltme" sonrasında RStudio / R'de Java yükleme hatası


122

Yakın zamanda OSX Mountain Lion'dan Yosemite'ye ve R 3.1.3'ten 3.2'ye "yükselttim". Yükseltmeden hemen sonra, R veya RStudio'yu açtığımda, Java 6'yı yüklemem gerektiğini belirten bir açılır mesaj aldım. Buna ek olarak, yükleme rJavaveya rJava'ya bağlı herhangi bir paket (örn. xlsx) RStudio'nun çökmesine (R da çöktü) bunu R.appdoğrudan açarak denediğimde ).

Stack Overflow'da ve başka yerlerde bulunan birkaç düzeltmeyi denedikten sonra (daha fazla ayrıntı aşağıda), yüklemenin rJavaveya bağımlı olan herhangi bir paketin rJavaartık R'nin çökmesine neden olmadığı, ancak aşağıdaki hatayla sonuçlandığı bir noktadayım :

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

Bununla birlikte, komut satırından R'yi çağırırsam ve sonra yüklersem rJavaveya bağlı olan herhangi bir paketi yüklersem rJava, işe yarıyor gibi görünüyor (veya en azından herhangi bir hata mesajı almıyorum).

Bazıları birkaç kez olmak üzere birkaç farklı düzeltme denedim ve tam olarak ne sırayla yaptığımı tam olarak hatırlayamıyorum (bunun böyle bir bataklık olacağını ve gerçekten takip etmeyeceğini anlamadım) , ama işin özü şu:

  • Aşağıdakileri ekledim.bash_profile ( bu SO cevabı başına ):

    dışa aktar JAVA_HOME = "/ usr / libexec / java_home -v 1.8"
    dışa aktar LD_LIBRARY_PATH = $ JAVA_HOME / jre / lib / server

  • Aşağıdaki gibi komut satırından yeniden yapılandırılmış java:

    sudo R CMD javareconf -n

  • Kontrol edildi options("java.home")ve bunun olarak ayarlandığı keşfedildi NULL. Aşağıdakine ayarlamayı denedim ( bu SO sorusu başına ):

    seçenekleri ( "java.home" = "/ Library / Java / JavaVirtualMachines / jdk1.8.0_45.jdk / İçerik / Ev / jre")

  • En son Java Geliştirme Kitini yükledim ve rJavakaynaktan yeniden yükledim (onu nerede bulduğumu hatırlayamıyorum).

Tüm bunları denerken bir noktada, rJavaR'yi çökertmeden yükleyebildim , bunun yerine yukarıda yayınlanan hata mesajını aldım. Ek olarak, RStudio'dan çıktığımda, normal olarak kapanıyor gibi görünüyordu, ancak daha sonra, kapatmaya çalışırken programın çöktüğünü belirten bir "RStudio beklenmedik şekilde çık" mesajı beliriyordu.

Sonunda OS X 2014-001 (Java 6) için Java yüklemeye karar verdim , çünkü seçeneklerim bitiyor gibi görünüyordu. Şimdi, R veya RStudio'yu açtığımda "Bu yazılımın Java 6'ya ihtiyacı var" açılır mesajı artık görünmüyor. Yine de .onLoad failed in loadNamespace() for 'rJava'yukarıda yayınlanan hata mesajını alıyordum .

Daha önce baktığım bazı gönderileri incelerken , daha önce kaçırdığım başka bir SO cevabı fark ettim , bu da RStudio'yu RStudio'ya java'ya doğru yolu veren aşağıdaki komut satırı koduyla açmayı önerdi:

LD_LIBRARY_PATH = $ (/ usr / libexec / java_home) / jre / lib / server: açık -a RStudio

Bu bir RStudio penceresi açtı ve ben de rJavabir hata almadan ona bağlı olan paketleri yükleyebildim .

Son olarak, R'yi komut satırından çalıştırmayı denedim (daha önce yapmadığım). Komut satırında, yüklemede rJavaveya işe bağlı olan herhangi bir pakette rJavave herhangi bir hata atmadığı ortaya çıkıyor.

Yani, rJavaRStudio'yu komut satırından RStudio'ya java yolunu veren kodla açarsam (yukarıda belirtildiği gibi) artık çalışmaya başlayabilirim . Bununla birlikte, RStudio'nun bir komut satırı kludge'ına ihtiyaç duymadan normal Mac tarzında açılabilmesi için, temelde yatan sorunu çözmenin bir yolunu bulmak isterim. Ayrıca, Java'nın eski bir sürümünün yüklü olmasının yolun ilerleyen kısımlarında sorunlara neden olabileceğinden de endişeliyim.

Bu sorunun nasıl teşhis edileceği ve çözüleceği konusunda herhangi bir fikri olan var mı?


Bu çözüm El Capitan'da hala sizin için çalışıyor mu? LD_LIBRARY_PATH=$(/usr/libexec/java_home)/jre/lib/server: open -a RStudioNumarayı kullanmadan önce bunu çalıştırdım , ama artık çalışmıyor. Ben ettik bu konuda bir blog yazısı yazdı ve orada bu sorunu tanımladı. Başkalarının da bu konfigürasyonda bu sorunu yaşayıp yaşamadığını veya benim hatam olup olmadığını merak ediyorum.
Paul Klemm

Hala kullanıyorum Yosemite, bu yüzden emin değilim. İle ilgili bir cevap için aşağıya bakın El Capitan.
eipi10

Tamam, sanırım yeni bir soru göndereceğim. Evet, El Capitanaşağıdaki çözüm beklendiği kadar kısa sürede RStudioyüklenir rJava.
Paul Klemm

2
RStudio
Pranay Aryal 25'16

Teşhis otool -L /Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so sırasında, paylaşılan kitaplıkların ve nasıl çözüldüklerinin bir listesini almaya çalışın . Öğesinin çalışma zamanı içeriğini nasıl keşfedeceğimi bilmiyorum @rpath.
Dave X

Yanıtlar:


279

Ben de aynı sorunu yaşadım ve sizinle aynı adımları attım. Finder / Spotlight aracılığıyla RStudio'yu başlatmaya izin veren son adım, libjvm.dylib'i / usr / local / lib'ye bağlamaktı:

sudo ln -f -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib

-f Mevcut dosyanın / bağlantının üzerine yazmaya zorlamak için bayrak eklendi


4
El Capitan'dan Sierra'ya yükseltme yapıldığında aynı sorunu düzeltmek için çalıştı. +1
Murta

2
Bu pek çok sorunu çözdü; özellikle orijinal hata cannot jfindclass[[1]]bundan kaynaklanıyorsa rJava ve bir JDBC sürücüsünden gelebilir
Jenks

1
Macbook Pro'mda Java'yı her güncellediğimde bu komutu çalıştırmam gerekiyor. Hala macOS Sierra 10.12.5 ve Java Sürüm 8 Güncellemesi 141'de
çalışıyor

11
Bu neredeyse benim için çalıştı. Ek olarak /usr/local/lib/libjvm.dylib, / usr / local / lib / @rpath üzerinde görünmediği için R çerçevesine bir symlink eklemem gerekiyordu. Örneğin:ln -s /usr/local/lib/libjvm.dylib /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/
Dave X


53

OSX El Capitan 10.11'de, kullanıcının / usr / lib'ye yazma izni yoktur. Bunun yerine aşağıdaki komutu kullanın:

sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib

29

Libjvm.dylib dosyasını aşağıdaki gibi çalıştırarak açıkça yükleyebilirsiniz:

dyn.load('/Library/Java/JavaVirtualMachines/jdk1.8.0_66.jdk/Contents/Home/jre/lib/server/libjvm.dylib')
library(rJava)

Elbette mümkün, ancak uygun değil. Kabul edilen cevap muhtemelen daha iyi bir seçenektir. +1bir alternatif sunmak için.
thiagoveloso

27

MacOS High Sierra (10.13.1) ve Java Sürüm 9'da biraz farklı bir JVM yolu kullanmanız gerekir ( jreönceki Java sürümleri için talimatlara kıyasla yoldaki eksik klasöre dikkat edin ):

sudo ln -f -s $(/usr/libexec/java_home)/lib/server/libjvm.dylib /usr/local/lib

Ayrıca R'yi JVM hakkında bilgilendirmelisiniz:

MY_R_VERSION=$(Rscript -e "cat(with(R.version, sprintf('%s.%s', major, substring(minor, 1, 1))))")
ln -s /usr/local/lib/libjvm.dylib /Library/Frameworks/R.framework/Versions/$MY_R_VERSION/Resources/lib/

Muhteşem. İşe yaradı! El Capitan için önerilerin Sierra
KarthikS

Çok teşekkürler, bu benim için de çalıştı. macOS High Sierra 10.13.2
pat_krat

Bu bana yardımcı oldu. Bilgilendirme R bölümünü ben yapmadım. Hala işe yaradı. Çok teşekkürler :)
Harish

17

Aşağıdaki komut çalışır:

sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib

Bundan sonra, RStudio'da rJava'nın yüklenmesi "xlsx" paketinin yüklenmesi ile çalışır.

library("xlsx")

PS # 1 Ortamı: RStudio 0.99.491+ ve R 3.2.3+ ile Mac OS X El Capitan 10.11.3+. (Şimdi bunu macOS Sierra (10.12) ve R.3.3.1'de de test ettim.)

PS # 2 Bunun openxlsxçok daha hızlı olduğunu ve çalışmak için Java'ya güvenmediğini görüyorum, bu yüzden şimdi bu paketi kullanıyorum. Umarım başkalarına yardımcı olur.


1
teşekkür ederim arkadaşım günümü kurtardın Etrafta bulunan diğer çözümleri denedim ama sorunumu çözen bu oldu.
Matteo De Felice

1
Başka bir El Cap kullanıcısı (ancak MacGUI kullanıyor) teşekkür oyuyla. Bunu, en basit göründüğü için (ve Java runtime 1.6 yükleme yönergeleriyle ilgili önceki çabalar sorunu çözmediği için) ve pkg: rJava ve bağımlılık pkg; XLConnect ile anında başarı sağladığından beri bunu ilk kez denedi. Oracle'da bulunan ve Apple sayfasından bağlanan eski Java 1.6'yı yüklemeniz gerekebilir.
IRTFM

1
Merhaba, tavsiyeniz MacOS High Sierra'da da işe yarıyor, çok teşekkürler !!
user8193079

1
openxlsxFTW!
2018

Evet! @iled: Katılıyorum, openxlsxyine de kullansanız iyi olur .
Sander W. van der Laan

7

CRAN rJava'yı rJava'yı yeniden derlemenize gerek kalmadan veya paylaşılan kitaplığı R çerçeveleri kitaplık dizinine bağlayarak ek adımlar atmadan kullanabilmelisiniz.

sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /Library/Frameworks/R.framework/Libraries

6

Mac OS X El Capitan (10.11.6) çalıştıran iki Mac'te düzgün çalışmasını şu şekilde yapılandırdım:

  1. Bir terminal penceresinde aşağıdaki komutları vererek 'rJava'yı kaldırın:

    Rscript -e 'remove.packages("rJava")'
    sudo Rscript -e 'remove.packages("rJava")'
  2. Java yazılımını Oracle'dan indirin ve yükleyin: https://www.java.com/en/download/mac_download.jsp

  3. /Users/<userid>/.bashrcFavori düzenleyicinizi kullanmak için aşağıdaki satırları ekleyin :

    # Set JAVA_HOME so rJava package can find it
    export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)/jre
  4. Herhangi bir terminali, R ve RStudio pencerelerini kapatın ve yeniden başlatın (değişiklikleri almak için .bashrc).

  5. Aşağıdaki komutu bir Terminal penceresinde çalıştırın:

    sudo ln -sf $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
  6. Aşağıdaki komutu bir Terminal penceresinde çalıştırın:

    sudo Rscript -e 'install.packages("rJava", repos="http://rforge.net", type="source")'

Bunu takip ederken licuuc library / linker hatası alıyorum, açıklayabilir misin? MacOS Sierra'ya yüklemeye çalışıyorum, daha fazlası burada (Daha önce El Capitan'da).
hhh

5

İşte bunun için kolay adımlar:

  1. rJava paketini kaldırın: remove.packages (rJava)
  2. yakın R
  3. Mac'inize en son Java'yı yükleyin
  4. terminali açın ve şu komutu yazın: sudo R CMD javareconf
  5. R'yi açın ve bu komutla rJava'yı kurun:

    install.packages ("rJava", bağımlılıklar = DOĞRU, tür = "kaynak")


Aslında bunu buraya gelmeden önce yaptım. Benim rjava bağımlı kitaplığımı kurdu ama başlamadı. libjvm.dylibİçine bağlanması /usr/local/libda başladı :)
jonalv

3

Görüntü bulunamadı sorunu, en son Java SE 10 JDK ile OSX High Sierra'da yepyeni bir yüklemede mevcuttur.

RJava Github sorunları sayfasında bulunan düzeltmeyi kullanarak rJava ile ilgili yol sorununu çözebildim: https://github.com/su/rJava/issues/78

R CMD javareconf JAVA_CPPFLAGS = -I / System / Library / Frameworks / JavaVM.framework / Headers


1

İşte MAC'de benim için ne işe yaradı:

  1. Gözlerinde farklı ~/.profileveya ~/.bashrcbu satırı ekleyin: %export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home

    1.1 % source .profile(veya % source .bashrc)

  2. % sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
  3. remove.packages(rJava)
  4. remove.packages(Rweka)
  5. Terminalden şu komutu girin: %sudo R CMD javareconf
  6. install.packages("rJava", dependencies = TRUE, type = "source")
  7. install.packages("rJava", dependencies = TRUE, type = "source")
  8. Yükleyin library("rJava", "RWeka")

İyi şanslar.


1

Belki dosya sisteminize dokunmayan başka bir basit cevap:

$ 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

( jdk1.8.0_131.jdkJDK yolunuzla değiştirin.)


2
Ben homebrew R var ve benim için çalıştı tam komut şöyledir: 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. Yolun eksik olduğunu görebildimotool -l /usr/local/lib/R/3.3/site-library/rJava/libs/rJava.so | grep LC_RPATH
Ian

@ Belki de burada Java'yı Homebrew ile kurduğum ve şimdi rJava'yı çalıştırmaya çalıştığım bir çözüm biliyorsunuzdur . Fikirler?
hhh

1

Libjvm.dylib dosyasının konumunu kontrol edin.

Bunu deneyin, benim durumumda bu işe yaradı:

dyn.load('/Library/Java/JavaVirtualMachines/jdk-10.jdk/Contents/Home/lib/server/libjvm.dylib')
library(rJava)

1

Bulabildiğim tüm sorun giderme işlemlerini yaptım, ardından jdk-11.0.1_osx-x64_bin.dmg'yi şuradan yükledim: Oracle indirmeleri

Bundan sonra her şey mükemmel çalıştı.

Kitaplığı çalıştırdığınızda yüklenmeyen kitaplık sürümünü ('rJava') kontrol edin ve yüklemeniz gereken java sürümüyle eşleştirin.


1

Rstudio'da yüklenirken 'rJava'nın JDK sürümü konusunda oldukça katı olduğunu fark ettim.
Benim durumumda (Mac OS. 10.14.6 - Mojave) jdk-11'e karşı test edilen jdk-13'ü kurmuştum.
JDK sürümümü, Rstudio tarafından geçerli olduğu varsayılan var olmayan bir dizine bağladım (JDK 11):

sudo ln -sf /Library/Java/JavaVirtualMachines/jdk-13.jdk/ /Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk

ve şaşırtıcı bir şekilde bir cazibe gibi çalışıyor ...
BTW., yerel R.



0

Aşağıdaki bu satır rJava, bu tartışmada bazılarının yaptığı gibi , paketle ilgili yaşadığım sorunu çözdü . Eminim bu sorunun birden fazla çözümü vardır ve katkıları için hepsine içtenlikle teşekkür ederim çünkü bazen aşağıdaki gibi bir satır çöpe gitmekten çok zaman kazandırır!

sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib

0

Komut satırında aşağıdakileri çalıştırın: sudo R CMD javareconf

Yukarıda birkaç çözüm bundan bahsetmiştir, ancak aynı zamanda bir kişinin rJavapaketi kaldırıp daha sonra yeniden yüklemesini önermektedir . Bu ek adımları gereksiz buldum.


Çözümünüzü denedim sudo R CMD javareconfama library(rJava)hala aynı hataları veriyor: 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
Lazarus Thurston

0

Aşağıdaki komutu kullanarak R'deki referansı değiştirebilirsiniz:

sudo install_name_tool -change /Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home/lib/server/libjvm.dylib /Library/Java/JavaVirtualMachines/jdk-13.0.1.jdk/Contents/Home/lib/server/libjvm.dylib /Library/Frameworks/R.framework/Versions/3.6/Resources/library/rJava/libs/rJava.so
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.