Java MacOS Mojavew 加载包时出错
Java error in MacOS Mojavew when loading a package
我在 Macos-Mojave 中加载 library(xlsx)
时遇到熟悉的 Java 错误。
我已尝试重新安装 jdk-8 和 sudo R CMD javareconf
,如此处所述,
请注意 library(rjava)
加载正常,但在 library(xlsx)
时失败
WARNING: Initial Java 12 release has broken JNI support and does NOT work. Use stable Java 11 (or watch for 12u if avaiable).
ERROR: Java exception occurred during rJava bootstrap - see stderr for Java stack trace.
Exception in thread "main" java.lang.NullPointerException
at java.base/jdk.internal.reflect.Reflection.verifyMemberAccess(Reflection.java:130)
at java.base/java.lang.reflect.AccessibleObject.slowVerifyAccess(AccessibleObject.java:673)
at java.base/java.lang.reflect.AccessibleObject.verifyAccess(AccessibleObject.java:666)
at java.base/java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:638)
at java.base/java.lang.reflect.Field.checkAccess(Field.java:1075)
at java.base/java.lang.reflect.Field.get(Field.java:416)
Error: package or namespace load failed for ‘xlsx’:
.onLoad failed in loadNamespace() for 'xlsx', details:
call: .jcheck(silent = FALSE)
error: java.lang.NullPointerException.jcall(f, "Ljava/lang/Object;", "get", .jcast(ic, "java/lang/Object"))new("jobjRef", jobj = <pointer: 0x11d737c38>, jclass = "java/lang/NullPointerException")
有人可以在这里找到解决方案吗?非常感谢。
根据@Konrad 的回答,我执行了以下操作以删除除 Java 8 之外的所有版本。
检查现有版本
/usr/libexec/java_home -V
导航到需要卸载的 Java 版本。
cd /Library/Java/JavaVirtualMachines
在 JavaVirtualMachines 路径中,键入 ls
以查看存在哪些 Java 版本。它显示为,
jdk-11.0.2.jdk jdk-12.0.1.jdk jdk1.8.0_211.jdk
删除了除 8 之外的所有内容。
sudo rm -rf jdk-11.0.2.jdk (and others)
library(xlsx)
现在有效。
我在 Macos-Mojave 中加载 library(xlsx)
时遇到熟悉的 Java 错误。
我已尝试重新安装 jdk-8 和 sudo R CMD javareconf
,如此处所述,
请注意 library(rjava)
加载正常,但在 library(xlsx)
WARNING: Initial Java 12 release has broken JNI support and does NOT work. Use stable Java 11 (or watch for 12u if avaiable).
ERROR: Java exception occurred during rJava bootstrap - see stderr for Java stack trace.
Exception in thread "main" java.lang.NullPointerException
at java.base/jdk.internal.reflect.Reflection.verifyMemberAccess(Reflection.java:130)
at java.base/java.lang.reflect.AccessibleObject.slowVerifyAccess(AccessibleObject.java:673)
at java.base/java.lang.reflect.AccessibleObject.verifyAccess(AccessibleObject.java:666)
at java.base/java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:638)
at java.base/java.lang.reflect.Field.checkAccess(Field.java:1075)
at java.base/java.lang.reflect.Field.get(Field.java:416)
Error: package or namespace load failed for ‘xlsx’:
.onLoad failed in loadNamespace() for 'xlsx', details:
call: .jcheck(silent = FALSE)
error: java.lang.NullPointerException.jcall(f, "Ljava/lang/Object;", "get", .jcast(ic, "java/lang/Object"))new("jobjRef", jobj = <pointer: 0x11d737c38>, jclass = "java/lang/NullPointerException")
有人可以在这里找到解决方案吗?非常感谢。
根据@Konrad 的回答,我执行了以下操作以删除除 Java 8 之外的所有版本。
检查现有版本
/usr/libexec/java_home -V
导航到需要卸载的 Java 版本。
cd /Library/Java/JavaVirtualMachines
在 JavaVirtualMachines 路径中,键入 ls
以查看存在哪些 Java 版本。它显示为,
jdk-11.0.2.jdk jdk-12.0.1.jdk jdk1.8.0_211.jdk
删除了除 8 之外的所有内容。
sudo rm -rf jdk-11.0.2.jdk (and others)
library(xlsx)
现在有效。