ปัญหาเมื่อพยายามโหลดแพ็คเกจใน R เนื่องจาก rJava


94

เมื่อฉันพิมพ์require(xlsx)เพื่อโหลดแพ็คเกจxlsxใน R ข้อความต่อไปนี้จะปรากฏขึ้น:

> require(xlsx)
Loading required package: xlsx
Loading required package: xlsxjars
Loading required package: rJava
Error : .onLoad failed in loadNamespace() for 'rJava', details:
  call: fun(libname, pkgname)
  error: JAVA_HOME cannot be determined from the Registry
Failed with error:  ‘package ‘rJava’ could not be loaded’

ฉันพยายามโหลดrJavaแพ็คเกจด้วยตนเอง แต่ได้รับข้อความแสดงข้อผิดพลาดนี้:

require(rJava)
Loading required package: rJava
Error : .onLoad failed in loadNamespace() for 'rJava', details:
  call: fun(libname, pkgname)
  error: No CurrentVersion entry in Software/JavaSoft registry! Try re-installing Java and make sure R and Java have matching architectures.

คุณมีข้อเสนอแนะเกี่ยวกับวิธีแก้ปัญหาหรือไม่?


4
ลองติดตั้งrJava... อ่านนี้
agstudy

6
แพลตฟอร์มใด ถ้าเป็น Windows นี่อาจเป็นประโยชน์
dardisco

นอกจากนี้ปัญหาของคุณทำให้คุณสามารถบันทึกไฟล์. xlsx ของคุณเป็น csv ก่อนแล้วจึงใช้ read.csv แทนที่จะพยายามอ่านในไฟล์. xlsx
generic_user

2
หากคำตอบสุดท้ายที่ระบุไว้ (16 คะแนน ณ จุดนี้) แก้ไขให้คุณได้โปรดทำเครื่องหมายคำตอบว่ายอมรับ
Slak

ฉันพบปัญหานี้เช่นกัน แต่เบี่ยงเบนโดยใช้readxlแพ็คเกจของ Hadley Wickham การสนทนาเพิ่มเติมเกี่ยวกับที่นี่ - ไม่สามารถติดตั้ง libraryxlsx ใน r และมองหาทางเลือกอื่น
Ben

คำตอบ:


126

สาเหตุอาจเชื่อมโยงกับข้อเท็จจริงที่คุณใช้ระบบปฏิบัติการ64 บิตและเวอร์ชัน R แต่ไม่ได้ติดตั้ง Java ด้วยสถาปัตยกรรมเดียวกัน สิ่งที่คุณต้องทำคือดาวน์โหลด Java 64 บิตจากหน้านี้: https://www.java.com/en/download/manual.jsp

หลังจากนั้นให้ลองโหลดxlsxแพ็กเกจใหม่ คุณไม่จำเป็นต้องเริ่ม R ใหม่


2
(+1) ผมไม่แน่ใจว่าถ้าข้อความของ R สมบูรณ์ชี้ถึงนี้เป็นปัญหาที่เกิดขึ้น แต่มันก็เป็นกรณีสำหรับฉัน! เพื่อความแน่ใจคุณสามารถตรวจสอบได้ ถ้าคุณกำลังเรียก 64 bit OS, และ 64 บิต R java -d64 versionเรียกใช้บรรทัดคำสั่งและพยายาม หากคุณใช้ Java 64 บิตอาจเป็นปัญหาเส้นทางระบบ
AdamO

3
คุณหมายถึงjava -d64 -version?
Harrison

8

เป็นเพราะเวอร์ชัน Java อย่างใดอย่างหนึ่ง (32 บิต / 64 บิต) หายไปจากคอมพิวเตอร์ของคุณ ลองติดตั้งทั้ง Jdks และรันโค้ด
หลังจากติดตั้ง Jdks แล้วให้เปิด R และพิมพ์รหัส

system("java -version")

สิ่งนี้จะทำให้คุณติดตั้ง Jdk เวอร์ชัน จากนั้นลองโหลดแพ็คเกจ rJava สิ่งนี้ได้ผลสำหรับฉัน


8

ฉันมีปัญหาคล้าย ๆ กันสิ่งที่ใช้ได้ผลสำหรับฉันคือการตั้งค่า JAVA_HOME ฉันเหนื่อยก่อนใน R:

Sys.setenv(JAVA_HOME = "C:/Program Files/Java/jdk1.8.0_101/")

และเมื่อมันใช้งานได้จริงฉันตั้งค่าในคุณสมบัติของระบบ -> ขั้นสูง -> ตัวแปรสภาพแวดล้อมโดยการเพิ่มตัวแปรระบบใหม่ จากนั้นฉันรีสตาร์ท R / RStudio และทุกอย่างก็ใช้ได้


4

ฉันมีปัญหาที่คล้ายกัน มันเกิดจากแพ็คเกจที่ขึ้นกับ 'rJava' ปัญหานี้สามารถแก้ไขได้โดยกำหนดทิศทาง R ใหม่เพื่อใช้ไฟล์JAVA_HOME.

if(Sys.getenv("JAVA_HOME")!=""){
    Sys.setenv(JAVA_HOME="")
}
library(rJava)

สิ่งนี้ได้ผลสำหรับฉัน


4

หากคุณมีข้อผิดพลาดนี้ใน RStudio ให้ใช้รหัสสิ่งแวดล้อมของ Lauren ด้านบนและเปลี่ยนเวอร์ชัน R ของคุณเป็นเวอร์ชัน 32 บิตใน Tools, Global Options ควรมีทั้งตัวเลือก 32 บิตและ 64 บิต R หากคุณมีเวอร์ชันที่ใหม่กว่า สิ่งนี้จะต้องมีการรีสตาร์ท R และ จำกัด ตัวเลือกหน่วยความจำของคุณ การติดตั้ง jre เวอร์ชัน 64 บิตไม่จำเป็นต้องใช้


2

แพคเกจทางเลือกที่คุณสามารถใช้เป็นreadxl แพ็คเกจนี้ไม่ต้องการการอ้างอิงภายนอก


2

ฉันคิดว่าฉันพบวิธีแก้ปัญหาเพราะฉันมีปัญหาเดียวกัน!

การแก้ไขของฉันคือการติดตั้งทั้ง 32 บิตและ 64 บิต JRE (Java Runtime Environment) เวอร์ชัน 8 อัปเดต 181 (ฉันต้องการ 32 บิตสำหรับแอปพลิเคชันอื่น แต่การแก้ไขของคุณทำได้ดีเพียงแค่ติดตั้ง 64 บิตใหม่ด้วยตัวเอง)


1

คำตอบในลิงค์แก้ไขปัญหาของฉัน

ก่อนความละเอียดฉันลองเพิ่ม JAVA_HOME ในสภาพแวดล้อม windows มันแก้ไขข้อผิดพลาดนี้ แต่สร้างปัญหาอื่น วิธีแก้ปัญหาในลิงค์ด้านบนช่วยแก้ปัญหานี้โดยไม่ต้องสร้างปัญหาเพิ่มเติม


0

หากคุณมีปัญหากับ macOS ไม่มีวิธีง่ายๆที่นี่ :( โดยเฉพาะอย่างยิ่งเมื่อคุณต้องการใช้ R3.4 ฉันเคยไปที่นั่นแล้ว;)

R 3.4, rJava, macOS และอื่น ๆ อีกมากมาย;)

สำหรับ R3.3 นั้นไม่ง่ายเลยสักนิด (R3.3 ถูกคอมไพล์โดยใช้คอมไพเลอร์อื่น)

การผจญภัยของ R, Java, rJava และ macOS

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.