ฉันเพิ่ง "อัปเกรด" จาก OSX Mountain Lion เป็น Yosemite และจาก R 3.1.3 เป็น 3.2 ทันทีหลังจากการอัพเกรดเมื่อฉันเปิด R หรือ RStudio ฉันได้รับข้อความป๊อปอัปแจ้งว่าฉันต้องติดตั้ง Java 6 นอกจากนี้การโหลดrJava
หรือแพ็คเกจใด ๆ ที่ขึ้นอยู่กับ rJava (เช่นxlsx
) ทำให้ RStudio ขัดข้อง (R ก็พัง เมื่อฉันลองสิ่งนี้โดยเปิดR.app
โดยตรง)
หลังจากลองแก้ไขสองสามอย่างที่พบใน Stack Overflow และที่อื่น ๆ (รายละเอียดเพิ่มเติมด้านล่าง) ฉันอยู่ในจุดที่การโหลดrJava
หรือแพ็คเกจใด ๆ ที่ขึ้นอยู่กับว่าrJava
ไม่ทำให้ R ขัดข้องอีกต่อไป แต่ส่งผลให้เกิดข้อผิดพลาดต่อไปนี้:
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’
อย่างไรก็ตามหากฉันเรียกใช้ R จากบรรทัดคำสั่งแล้วโหลดrJava
หรือแพ็คเกจใด ๆ ที่ขึ้นอยู่rJava
ดูเหมือนว่าจะใช้งานได้ (หรืออย่างน้อยฉันก็ไม่ได้รับข้อความแสดงข้อผิดพลาดใด ๆ )
ฉันได้ลองพยายามแก้ไขหลายครั้งบางครั้งก็ไม่กี่ครั้งและจำไม่ได้ว่าฉันทำอะไรตามลำดับ (ไม่รู้ว่านี่จะเป็นเรื่องที่น่ารังเกียจและไม่ได้ติดตามจริงๆ) แต่นี่คือส่วนสำคัญของมัน:
เพิ่มสิ่งต่อไปนี้ในของฉัน
.bash_profile
(ตามคำตอบ SO นี้ ):ส่งออก JAVA_HOME = "/ usr / libexec / java_home -v 1.8"
ส่งออก LD_LIBRARY_PATH = $ JAVA_HOME / jre / lib / เซิร์ฟเวอร์กำหนดค่า java ใหม่จากบรรทัดคำสั่งดังนี้:
sudo R CMD javareconf -n
การตรวจสอบและค้นพบนี้ได้รับการตั้งค่าให้
options("java.home")
NULL
ฉันลองตั้งค่าเป็นดังต่อไปนี้ (ต่อคำถาม SO นี้ ):ตัวเลือก ( "java.home" = "/ Library / Java / JavaVirtualMachines / jdk1.8.0_45.jdk / สารบัญ / Home / JRE")
ติดตั้ง Java Development Kit ล่าสุดและติดตั้งใหม่
rJava
จากซอร์ส (จำไม่ได้ว่าเจออันไหน)
ในบางจุดในขณะที่ลองสิ่งเหล่านี้ทั้งหมดฉันสามารถโหลดได้rJava
โดยไม่หยุดทำงาน R แต่ได้รับข้อความแสดงข้อผิดพลาดที่โพสต์ไว้ด้านบน นอกจากนี้เมื่อฉันออกจาก RStudio ดูเหมือนว่าจะปิดตามปกติ แต่จากนั้นข้อความ "RStudio ออกโดยไม่คาดคิด" จะปรากฏขึ้นแสดงว่าโปรแกรมขัดข้องขณะพยายามปิด
ในที่สุดฉันก็ตัดสินใจติดตั้งJava สำหรับ OS X 2014-001 (Java 6) เนื่องจากดูเหมือนว่าตัวเลือกจะหมด ตอนนี้เมื่อฉันเปิด R หรือ RStudio ข้อความป๊อปอัป "ซอฟต์แวร์นี้จำเป็นต้องใช้ Java 6" จะไม่ปรากฏขึ้นอีกต่อไป อย่างไรก็ตามฉันยังคงได้รับ.onLoad failed in loadNamespace() for 'rJava'
ข้อความแสดงข้อผิดพลาดที่โพสต์ไว้ด้านบน
ในการตรวจสอบโพสต์บางส่วนที่ฉันได้ดูไปแล้วฉันสังเกตเห็นคำตอบ SO อื่นที่ฉันพลาดมาก่อนซึ่งแนะนำให้เปิด RStudio ด้วยรหัสบรรทัดคำสั่งต่อไปนี้ซึ่งทำให้ RStudio เป็นเส้นทางที่ถูกต้องไปยัง java:
LD_LIBRARY_PATH = $ (/ usr / libexec / java_home) / jre / lib / เซิร์ฟเวอร์: เปิด -a RStudio
นั่นเป็นการเปิดหน้าต่าง RStudio และฉันก็สามารถโหลดrJava
และแพ็คเกจที่ขึ้นอยู่กับมันได้โดยไม่ได้รับข้อผิดพลาด
สุดท้ายฉันลองเรียกใช้ R จากบรรทัดคำสั่ง (ซึ่งฉันไม่เคยทำมาก่อน) ปรากฎว่าในบรรทัดคำสั่งการโหลดrJava
หรือแพ็คเกจใด ๆ ที่ขึ้นอยู่กับการrJava
ทำงานและไม่เกิดข้อผิดพลาดใด ๆ
ตอนนี้ฉันสามารถrJava
ทำงานได้ถ้าฉันเปิด RStudio จากบรรทัดคำสั่งด้วยรหัสที่ให้ RStudio เป็นเส้นทาง java (ตามที่ระบุไว้ด้านบน) อย่างไรก็ตามฉันต้องการหาวิธีแก้ไขปัญหาพื้นฐานไม่ว่าจะเป็นอะไรก็ตามเพื่อให้ RStudio สามารถเปิดได้ด้วยวิธีปกติของ Mac โดยไม่ต้องใช้ kludge บรรทัดคำสั่ง ฉันยังกังวลว่าการติดตั้ง Java เวอร์ชันเก่าอาจทำให้เกิดปัญหาได้
ใครมีความคิดเกี่ยวกับวิธีการวินิจฉัยและแก้ไขปัญหานี้หรือไม่?
Yosemite
อยู่เลยไม่แน่ใจ El Capitan
ดูด้านล่างสำหรับคำตอบที่เกี่ยวข้องกับ
El Capitan
วิธีแก้ปัญหาด้านล่างนี้มีประโยชน์ทันทีที่RStudio
โหลดได้rJava
ตามที่คาดไว้
otool -L /Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so
รับรายชื่อไลบรารีที่แชร์และวิธีการแก้ไข ฉันไม่แน่ใจว่าจะค้นพบเนื้อหารันไทม์ของไฟล์@rpath
.
LD_LIBRARY_PATH=$(/usr/libexec/java_home)/jre/lib/server: open -a RStudio
เคล็ดลับ แต่มันไม่ได้ผลอีกต่อไป ฉันได้เขียนบล็อกโพสต์เกี่ยวกับปัญหานี้และอธิบายปัญหานี้ที่นั่น ฉันสงสัยว่าคนอื่นประสบปัญหานี้เช่นกันในการกำหนดค่านี้หรือว่าเป็นความผิดของฉัน