java - 从 R : Java version missmatch 调用时 h2o 连接失败

标签 java r macos h2o

h2o 之前在我的笔记本电脑上工作,但我有一段时间没有使用它 (同时安装了新的软件包并更新了一些东西)。昨天我尝试使用它,但没有用。我删除了 R h2o 打包并从头开始重新安装 h2o

install.packages("h2o")

我尝试使用 h2o.init() 运行 h2o 但它给了我这个错误

java version "9"
Java(TM) SE Runtime Environment (build 9+181)
Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode)

Starting H2O JVM and connecting: ............................................................ 
[1] "localhost"
[1] 54321
[1] TRUE
[1] -1
[1] "Failed to connect to localhost port 54321: Connection refused"
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0curl: (7) Failed to connect to localhost port 54321: Connection refused
[1] 7
Error in h2o.init() : H2O failed to start, stopping execution.

当我查看它显示的错误日志时

Only Java 1.6-1.8 supported, version is 9

我试图寻找更多信息,我认为错误是由 this code 触发的第 1836 行:

if (version != null && !(version.startsWith("1.6") || version.startsWith("1.7") || version.startsWith("1.8"))) {
  System.err.println("Only Java 1.6-1.8 supported, version is " + version);
  return true;

看来 h2o 正在检查以 1.6、1.7 和 1.8 开头的版本,但出于某种原因我的版本以 9 开​​头! 但是,在终端上,java -version 给出

openjdk version "1.8.0_121"
OpenJDK Runtime Environment (Zulu 8.20.0.5-macosx) (build 1.8.0_121-b15)
OpenJDK 64-Bit Server VM (Zulu 8.20.0.5-macosx) (build 25.121-b15, mixed mode)

哪个java给出

/Users/myusername/anaconda3/bin/java

------------ 编辑 ------

更多信息:/usr/libexec/java_home -V 给出

Matching Java Virtual Machines (4):
    9, x86_64:  "Java SE 9" /Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home
    1.8.0_144, x86_64:  "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home
    1.8.0_51, x86_64:   "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home
    1.8.0_25, x86_64:   "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home

这解释了 h2o 看到的 9。我觉得它期望 1.x.0 但版本只是 9 很奇怪。无论如何,我似乎需要将 h2o.init() 命令指向 1.8 java,但我不知道该怎么做。

我通常使用 brew 安装大多数东西,但我从不使用 java 所以我对版本一无所知。

谢谢,最好!

最佳答案

您报告的错误是:

Only Java 1.6-1.8 supported, version is 9

您似乎安装了 Java 9,但 H2O 尚不支持。使用兼容版本的 Java 将修复错误。

如果您不能或不想卸载 Java 9,则需要通过设置 JAVA_HOME 环境变量来告诉 H2O 您想要使用哪个 Java。首先,通过在 shell 中执行以下命令来获取 Java 1.8 的位置:

/usr/libexec/java_home -v 1.8

在我的 mac 上,它向我展示了这个:

/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home

您可以通过运行以下命令检查 R 是否可以看到您的 JAVA_HOME 变量:Sys.getenv("JAVA_HOME")

如果这是空白(如果您使用的是 RStudio,则可能是空白),则必须做更多的工作才能让 R 看到 JAVA_HOME 变量。您可以编辑 ~/.Renviron 文件以添加 JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home 或任何该位置你的机器。然后重新启动 RStudio,它应该可以工作了。

关于java - 从 R : Java version missmatch 调用时 h2o 连接失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46490290/

相关文章:

ios - 旋转 NSView 360 度

c++ - 网 bean 10 : error: linker command failed with exit code 1 (use -v to see invocation)

Java编译器找不到Kafka类

r - 为重复的行分配唯一的值

java - ${pageContext.request.contextPath} 在本地工作,但不能远程工作

r - 将数据框写入带有标题的 .xls 文件

java - 在 OSX 10.7.2 上设置 R 和 Java 应用程序

objective-c - 如何制作 NSColor 变化的动画?

java - Maven 无法从 .m2/repository 找到 jar

java - 具有常量的单例枚举