从 R 调用时 h2o 连接失败:Java 版本不匹配
h2o failed to connect when called from R: Java version missmatch
h2o
以前在我的笔记本电脑上工作,但我有一段时间没用了
(同时安装了新的软件包并更新了一些东西)。昨天我尝试使用它,但没有用。我删除了 R
h2o
打包并使用
从头开始重新安装 h2o
install.packages("h2o")
我尝试 运行 h2o
和 h2o.init()
但它给了我这个错误
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
我试图寻找更多信息,我认为错误是由第 1836 行的 this code 触发的:
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)
和which 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,那么您需要通过设置 [=12] 来告诉 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
或 machine 上的任何位置。然后重新启动 RStudio,它应该可以工作了。
我关注了讨论 in this thread 以找到问题的解决方案,尽管这对某些人来说不是那么方便。
默认的 java
是 1.8.x,因此一旦 h2o
可以使用,但是从 R
调用 h2o
会得到版本 9 java
接到电话。
目前(相当不完整的)解决方案是像这样从终端启动 h2o
服务器
cd h2o-3.14.0.3 #navigate to wherever you have the h2o installation
java -jar h2o.jar
那个 运行 很好,然后我从 R
link 它而不启动 h2o
实例:
h2o.init(startH2O = FALSE)
如果您可以从终端启动 h2o
(如果您在集群上工作,这可能是唯一的方法),这会很好用,但如果您想从终端启动它可能会很烦人RStudio
马上。
h2o
以前在我的笔记本电脑上工作,但我有一段时间没用了
(同时安装了新的软件包并更新了一些东西)。昨天我尝试使用它,但没有用。我删除了 R
h2o
打包并使用
h2o
install.packages("h2o")
我尝试 运行 h2o
和 h2o.init()
但它给了我这个错误
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
我试图寻找更多信息,我认为错误是由第 1836 行的 this code 触发的:
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)
和which 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,那么您需要通过设置 [=12] 来告诉 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
或 machine 上的任何位置。然后重新启动 RStudio,它应该可以工作了。
我关注了讨论 in this thread 以找到问题的解决方案,尽管这对某些人来说不是那么方便。
默认的 java
是 1.8.x,因此一旦 h2o
可以使用,但是从 R
调用 h2o
会得到版本 9 java
接到电话。
目前(相当不完整的)解决方案是像这样从终端启动 h2o
服务器
cd h2o-3.14.0.3 #navigate to wherever you have the h2o installation
java -jar h2o.jar
那个 运行 很好,然后我从 R
link 它而不启动 h2o
实例:
h2o.init(startH2O = FALSE)
如果您可以从终端启动 h2o
(如果您在集群上工作,这可能是唯一的方法),这会很好用,但如果您想从终端启动它可能会很烦人RStudio
马上。