RJava लोड त्रुटि में RStudio / R के बाद "उन्नयन" के लिए OSX Yosemite


122

मैंने हाल ही में OSX Mountain Lion से Yosemite और R 3.1.3 से 3.2 तक "उन्नत" किया। अपग्रेड के तुरंत बाद, जब मैंने R या RStudio खोला, तो मुझे एक पॉप-अप संदेश मिला, जिसमें कहा गया था कि मुझे Java 6 स्थापित करने की आवश्यकता है। इसके अलावा, लोडिंग rJavaया कोई भी पैकेज जो rJava (जैसे xlsx) पर निर्भर करता है, RStudio के क्रैश होने का कारण बना (R) क्रैश हो गया था जब मैंने R.appसीधे इसे खोलकर कोशिश की )।

स्टैक ओवरफ्लो और अन्य जगहों पर पाए जाने वाले कुछ सुधारों (नीचे अधिक विवरण) की कोशिश करने के बाद, मैं एक ऐसे बिंदु पर हूं जहां लोडिंग rJavaया कोई भी पैकेज जो rJavaअब निर्भर नहीं करता है , आर को क्रैश करने का कारण बनता है, लेकिन निम्न त्रुटि के परिणामस्वरूप:

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

हालांकि, अगर मैं कमांड लाइन से आर को आमंत्रित करता हूं और फिर लोड rJavaया किसी भी पैकेज पर निर्भर करता है rJava, तो यह काम करने लगता है (या कम से कम मुझे कोई त्रुटि संदेश नहीं मिलता है)।

मैंने कई बार अलग-अलग प्रयास किए गए फ़िक्सेस, उनमें से कुछ को कुछ समय के लिए आज़माया है, और यह बिल्कुल याद नहीं कर सकता कि मैंने जो किया, वह किस क्रम में किया (यह एहसास नहीं था कि यह एक ऐसी स्थिति होगी और वास्तव में ट्रैक रखने वाला नहीं था) , लेकिन यहाँ इसका सार है:

  • निम्नलिखित को मेरे .bash_profile( इस SO उत्तर के अनुसार ) जोड़ा गया :

    निर्यात JAVA_HOME = "/ usr / libexec / java_home -v 1.8"
    निर्यात LD_LIBRARY_PATH = $ JAVA_HOME / jre / lib / सर्वर

  • कमांड लाइन से जावा को फिर से कॉन्फ़िगर करें:

    सूदो आर सीएमडी जावरकोनफ-एन

  • जाँच की गई options("java.home")और पता चला कि यह निर्धारित किया गया था NULL। मैंने इसे निम्नलिखित ( इस SO प्रश्न के अनुसार ) सेट करने की कोशिश की :

    विकल्प ( "java.home" = "/ पुस्तकालय / जावा / JavaVirtualMachines / jdk1.8.0_45.jdk / सामग्री / होम / JRE")

  • नवीनतम जावा डेवलपमेंट किट स्थापित rJavaकिया और स्रोत से पुनः इंस्टॉल किया गया (यह याद नहीं कर सकता कि मुझे वह कहां मिला)।

इन सभी को आजमाते समय, मैं rJavaआर को क्रैश किए बिना लोड करने में सक्षम था , लेकिन इसके बजाय त्रुटि संदेश ऊपर पोस्ट किया गया। इसके अलावा, जब मैं RStudio को छोड़ता हूं, तो यह सामान्य रूप से बंद होने लगता है, लेकिन फिर "RStudio ने अप्रत्याशित रूप से छोड़ दिया" संदेश पॉप अप होगा, यह दर्शाता है कि कार्यक्रम बंद होने की कोशिश करते समय दुर्घटनाग्रस्त हो गया था।

मैंने अंततः OS X 2014-001 (Java 6) के लिए जावा को स्थापित करने का फैसला किया , क्योंकि मुझे ऐसा लग रहा था कि मैं विकल्पों से बाहर चल रहा हूं। अब, जब मैंने R या RStudio खोला, "इस सॉफ़्टवेयर को Java 6 की जरूरत है" पॉप-अप संदेश अब दिखाई नहीं देता है। हालाँकि, मुझे अभी भी .onLoad failed in loadNamespace() for 'rJava'ऊपर पोस्ट में त्रुटि संदेश मिल रहा था ।

जिन कुछ पोस्टों पर मैंने पहले ही गौर कर लिया था, उनकी समीक्षा करने में, मैंने एक और एसओ उत्तर पर ध्यान दिया, जिसे मैंने पहले याद किया था, जिसने RStudio को निम्न कमांड लाइन कोड के साथ खोलने की सिफारिश की, जो RStudio को जावा का सही रास्ता देता है:

LD_LIBRARY_PATH = $ (/ usr / libexec / java_home) / jre / lib / सर्वर: ओपन -a RStudio

इसने एक RStudio विंडो खोली और मैं rJavaएक त्रुटि प्राप्त किए बिना लोड करने और पैकेज करने में सक्षम था ।

अंत में, मैंने कमांड लाइन से आर चलाने की कोशिश की (जो मैंने पहले नहीं किया था)। यह पता चलता है कि कमांड लाइन पर, लोडिंग rJavaया कोई भी पैकेज जो rJavaकाम पर निर्भर करता है और कोई त्रुटि नहीं करता है।

इसलिए, मैं अब rJavaकाम कर सकता हूं अगर मैं RStudio को कमांड लाइन से खोलता हूं जो RStudio को जावा पथ देता है (जैसा कि ऊपर उल्लेख किया गया है)। हालांकि, मैं अंतर्निहित समस्या को ठीक करने का एक तरीका खोजना चाहता हूं, जो कुछ भी हो सकता है, ताकि RStudio को सामान्य मैक तरीके से खोला जा सके, बिना कमांड लाइन कीचड़ के। मुझे यह भी चिंता है कि जावा के पुराने संस्करण को स्थापित करने से सड़क की समस्याएँ हो सकती हैं।

क्या किसी के पास इस मुद्दे का निदान और हल करने के बारे में कोई विचार है?


क्या यह समाधान अभी भी El Capitan में आपके लिए काम करता है? मुझे यह काम LD_LIBRARY_PATH=$(/usr/libexec/java_home)/jre/lib/server: open -a RStudioट्रिक का उपयोग करने से पहले मिला है , लेकिन यह किसी भी अधिक काम नहीं करता है। मैंने इस मुद्दे के बारे में एक ब्लॉग पोस्ट लिखी है और इस समस्या का वर्णन किया है। मुझे आश्चर्य है कि अगर दूसरों को इस विन्यास में भी इस समस्या का अनुभव होता है या यदि यह मेरी गलती है।
पॉल क्लेम

मैं अभी भी उपयोग कर रहा हूं Yosemite, इसलिए मुझे यकीन नहीं है। से संबंधित उत्तर के लिए नीचे देखें El Capitan
eipi10

ठीक है, मुझे लगता है कि मैं एक नया सवाल पोस्ट करूंगा। हाँ, El Capitanनीचे दिया गया समाधान उम्मीद के मुताबिक RStudioलोड होते ही मददगार होता rJavaहै।
पॉल क्लेम

2
यह काम करने के बाद मैंने RStudio
प्रणय

निदान करने पर, otool -L /Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so साझा पुस्तकालयों की सूची प्राप्त करने का प्रयास करें और वे कैसे हल हो जाएं। मुझे यकीन नहीं है कि कैसे रनटाइम कंटेंट की खोज की जाए @rpath
डेव एक्स

जवाबों:


279

मुझे भी यही समस्या थी और आपके जैसे ही कदम उठाए। खोजक / स्पॉटलाइट के माध्यम से RStudio शुरू करने की अनुमति देने का अंतिम चरण libjvm.dylib को / usr / स्थानीय / लिबर से जोड़ना था:

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

-f मौजूदा फ़ाइल / लिंक को अधिलेखित करने के लिए ध्वज जोड़ा गया है


4
एल कैपिटन से सिएरा में अपग्रेड किए जाने पर इसी समस्या को ठीक करने के लिए काम किया गया। +1
मूर्ति

2
इससे बहुत सारी समस्याएं हल हो गईं; विशेष रूप से अगर मूल त्रुटि cannot jfindclass[[1]]rJava और JDBC ड्राइवर से आ सकती है
जेनक्स

1
मुझे हर बार जब मैं अपने मैकबुक प्रो पर जावा अपडेट करता हूं तो मुझे यह कमांड चलाना होगा। यह अभी भी MacOS सिएरा 10.12.5 और जावा संस्करण 8 अद्यतन 141. पर काम करता है
thiagoveloso

11
यह लगभग मेरे लिए काम किया। इसके अतिरिक्त, मुझे /usr/local/lib/libjvm.dylibफ़ाइल में R फ्रेमवर्क में एक सिम्लिंक जोड़ना था , क्योंकि / usr / स्थानीय / lib / @rpath पर नहीं लगता है। उदाहरण के लिए:ln -s /usr/local/lib/libjvm.dylib /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/
डेव एक्स


53

OSX El Capitan 10.11 पर, उपयोगकर्ता के पास / usr / lib लिखने की अनुमति नहीं है। इसलिए इसके बजाय, निम्न कमांड का उपयोग करें:

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

29

आप libjvm.dylib को समान रूप से चलाकर, लोड कर सकते हैं

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

सुनिश्चित करने के लिए संभव है, लेकिन सुविधाजनक नहीं है। स्वीकृत उत्तर संभवतः एक बेहतर विकल्प है। +1हालांकि एक विकल्प की पेशकश के लिए।
थिएगोवेलोसो

27

MacOS हाई सिएरा (10.13.1) और जावा संस्करण 9 पर आपको थोड़ा अलग JVM पथ का उपयोग करना होगा ( jreपहले के जावा संस्करणों के निर्देशों की तुलना में पथ में गायब फ़ोल्डर देखें):

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

आपको JVM के बारे में R को सूचित करना होगा:

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/

बहुत बढ़िया। वह काम किया! लगता है कि एल कैपिटन के लिए सुझाव सिएरा के लिए काम नहीं करते हैं
कार्तिक्स

बहुत बहुत धन्यवाद, इसने मेरे लिए भी काम किया। macOS हाई सिएरा 10.13.2
pat_krat

इससे मुझे मदद मिली। मैंने नोटिफिकेशन R पार्ट नहीं किया। यह अभी भी काम किया। बहुत बहुत धन्यवाद :)
हरीश

17

निम्नलिखित कमांड काम करता है:

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

उसके बाद, RStudio में, लोडिंग rJava "xlsx" पैकेज की लोडिंग के माध्यम से काम करता है।

library("xlsx")

PS # 1 पर्यावरण: RStudio 0.99.491+ और R 3.2.3+ के साथ Mac OS X El Capitan 10.11.3+। (मैंने अब इसका परीक्षण macOS Sierra (10.12) और R.3.3.1 पर भी किया है।)

PS # 2 मुझे लगता है कि openxlsxयह बहुत तेज है और जावा पर काम करने के लिए निर्भर नहीं है, इसलिए मैं अब उस पैकेज का उपयोग कर रहा हूं। आशा है कि दूसरों की मदद करता है।


1
शुक्रिया मेरे दोस्त, आपने मेरा दिन बचा लिया। मैंने आसपास पाए गए अन्य समाधानों के साथ प्रयास किया लेकिन यह वह था जिसने मेरे मुद्दे को हल किया।
मट्टियो डी फेलिस

1
एक और एल कैप उपयोगकर्ता (लेकिन मैकगीयू का उपयोग करके) धन्यवाद के साथ। पहले से यह कोशिश की है क्योंकि यह सबसे सरल प्रतीत होता है (और जावा रनटाइम 1.6 स्थापित करने के निर्देशों के साथ पहले के प्रयासों ने समस्या हल नहीं की थी) और pkg के साथ तत्काल सफलता: rJava और निर्भरता pkg; XLConnect। मई की जरूरत है कि विरासत जावा 1.6 स्थापित करें जो कि ओरेकल से उपलब्ध है और ऐप्पल पेज से जुड़ा हुआ है।
IRTFM

1
नमस्ते, आपकी सलाह मैकओएस हाई सिएरा के साथ भी काम करती है, बहुत बहुत धन्यवाद !!
14:8 बजे user8193079

1
openxlsxFTW!
iled

हाँ! @ प्रकाशित: मैं सहमत हूँ, openxlsxवैसे भी बेहतर उपयोग ।
Sander W. van der Laan

7

आप RJava को फिर से शुरू करने की आवश्यकता के बिना CRAN rJava का उपयोग करने में सक्षम होना चाहिए, या साझा लाइब्रेरी को R फ्रेमवर्क लाइब्रेरी डायरेक्टरी से जोड़कर कोई अतिरिक्त चरण करना चाहिए।

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

6

इसे मैंने मैक ओएस एक्स एल कैपिटान (10.11.6) पर चलने वाले दो मैक पर ठीक से काम करते हुए कॉन्फ़िगर किया है:

  1. टर्मिनल विंडो में निम्नलिखित कमांड जारी करके 'rJava' को अनइंस्टॉल करें:

    Rscript -e 'remove.packages("rJava")'
    sudo Rscript -e 'remove.packages("rJava")'
  2. Oracle से जावा सॉफ्टवेयर डाउनलोड और इंस्टॉल करें: https://www.java.com/en/download/mac_download.jsp

  3. /Users/<userid>/.bashrcअपने पसंदीदा संपादक का उपयोग करने के लिए निम्न पंक्तियाँ जोड़ें :

    # Set JAVA_HOME so rJava package can find it
    export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)/jre
  4. किसी भी टर्मिनल, R और RStudio विंडो को बंद करें और फिर से शुरू करें (परिवर्तनों को लेने के लिए .bashrc)।

  5. टर्मिनल विंडो में निम्न कमांड चलाएँ:

    sudo ln -sf $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
  6. टर्मिनल विंडो में निम्न कमांड चलाएँ:

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

इसका अनुसरण करते हुए मुझे लाइसेंस पुस्तकालय / लिंकर त्रुटि मिल रही है, क्या आप समझा पा रहे हैं? MacOS सिएरा पर स्थापित करने की कोशिश कर रहा है, यहाँ और अधिक (पहले एल Capitan में)।
hhh

5

यहाँ इसके लिए आसान कदम हैं:

  1. rJava पैकेज निकालें: remove.packages (rJava)
  2. आर बंद करो
  3. आप मैक पर नवीनतम जावा स्थापित करें
  4. टर्मिनल खोलें और इस कमांड को टाइप करें: sudo R CMD javareconf
  5. इस कमांड के साथ RJava खोलें और इंस्टॉल करें:

    install.packages ("rJava", निर्भरता = TRUE, प्रकार = "स्रोत")


इससे पहले कि मैं यहां समाप्त होता, मैंने वास्तव में ऐसा किया। इसने मेरी rajava डिपेंडेंट लाइब्रेरी स्थापित की लेकिन शुरू नहीं हुई। जोड़ने के libjvm.dylibमें /usr/local/libबनाया यह भी शुरू :)
jonalv

3

छवि नहीं मिली समस्या नवीनतम जावा एसई 10 जेडडीके के साथ ओएसएक्स हाई सिएरा पर एक नए इंस्टॉलेशन के साथ मौजूद है।

मैं rJava गथुब मुद्दों पृष्ठ पर पाया फिक्स का उपयोग करके rJava के साथ पथ मुद्दे को हल करने में सक्षम था: https://github.com/su/rJava/issues/78

R CMD javareconf JAVA_CPPFLAGS = -I / प्रणाली / पुस्तकालय / रूपरेखा / JavaVM.framework / Headers


1

यहाँ मैक पर मेरे लिए क्या काम किया:

  1. अपने ~/.profileया ~/.bashrcइस लाइन को जोड़ने में: %export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home

    १.१ % source .profile(या % 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. टर्मिनल से इस कमांड को दर्ज करें: %sudo R CMD javareconf
  6. install.packages("rJava", dependencies = TRUE, type = "source")
  7. install.packages("rJava", dependencies = TRUE, type = "source")
  8. अपने लोड करें library("rJava", "RWeka")

शुभकामनाएँ।


1

शायद एक और सरल उत्तर जो आपके फाइल सिस्टम को नहीं छूता है:

$ 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.jdkअपने JDK पथ के साथ स्थानापन्न ।)


2
मैं homebrew आर है, और सटीक आदेश है कि मेरे लिए काम किया है: 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। मैं यह देख पा रहा था कि रपथ गायब थाotool -l /usr/local/lib/R/3.3/site-library/rJava/libs/rJava.so | grep LC_RPATH
इयान

@ यदि आप शायद इसका हल यहां जानते हैं, जहां मैंने होमब्रे के साथ जावा स्थापित किया है और अब rJava काम करने की कोशिश कर रहा हूं। विचार?
hhh

1

Libjvm.dylib फ़ाइल का स्थान जांचें।

यह कोशिश करो, मेरे मामले में यह काम किया:

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

1

: मैं सभी समस्या निवारण मैं मिल सकता है, से तो स्थापित JDK-11.0.1_osx-x64_bin.dmg माध्यम से चला गया ओरेकल डाउनलोड

उसके बाद सब कुछ पूरी तरह से काम किया।

जब आप पुस्तकालय ('rJava') चलाते हैं और जो java संस्करण आपको स्थापित करने की आवश्यकता है, उससे मेल खाने वाले पुस्तकालय के संस्करण की जाँच करें।


1

मैंने देखा कि Rstudio में लोड करते समय JDK संस्करण के बारे में 'rJava' काफी सख्त है।
मेरे मामले में (मैक ओएस। 10.14.6 - मोजावे) मैंने jdk-13 स्थापित किया था जिसे jdk-11 के खिलाफ परीक्षण किया गया था।
मैंने अपने JDK संस्करण को एक गैर-मौजूद निर्देशिका से जोड़ा है जिसे Rstudio (JDK 11) द्वारा मान्य माना गया था:

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

और आश्चर्यजनक रूप से यह एक आकर्षण की तरह काम करता है ...
BTW।, मूल R में पिछले निर्देशों के बाद 'rJava' चलाने के लिए कोई समस्या नहीं थी।



0

नीचे इस पंक्ति ने उसी समस्या को हल किया है जो मुझे rJavaपैकेज के साथ हो रही थी जैसा कि इस चर्चा में कुछ अन्य लोगों ने किया था। मुझे यकीन है कि इस समस्या का एक से अधिक समाधान हैं और मैं ईमानदारी से उन सभी को उनके योगदान के लिए धन्यवाद देता हूं, क्योंकि कभी-कभी नीचे की तरह एक पंक्ति बहुत समय बर्बाद होने से बचाती है!

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

0

कमांड लाइन पर निम्नलिखित चलाएँ: sudo R CMD javareconf

ऊपर दिए गए कई समाधानों ने इसका उल्लेख किया है, लेकिन वे यह भी सुझाव देते हैं कि एक rJavaपैकेज को हटा दें और बाद में फिर से स्थापित करें । मैंने उन अतिरिक्त कदमों को अनावश्यक पाया।


मैंने आपके समाधान की कोशिश की sudo R CMD javareconfलेकिन library(rJava)अभी भी वही त्रुटियां देता है: 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
लाजर थर्सटन

0

आप निम्न कमांड का उपयोग करके R में संदर्भ बदल सकते हैं:

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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.