Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从R:Java版本missmatch调用h2o时连接失败_Java_R_Macos_H2o - Fatal编程技术网

从R:Java版本missmatch调用h2o时连接失败

从R:Java版本missmatch调用h2o时连接失败,java,r,macos,h2o,Java,R,Macos,H2o,h2o以前在我的笔记本电脑上工作,但我有一段时间没有使用它 (同时安装了新的软件包并进行了更新)。昨天我试着用它,但没用。我删除了打包的Rh2o并重新安装了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, mi

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
我试图寻找更多信息,我认为错误是由第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)
/Users/myusername/anaconda3/bin/java
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
以及java给出的

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)
/Users/myusername/anaconda3/bin/java
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
------------编辑-------

更多信息:
/usr/libexec/java_home-V
提供

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)
/Users/myusername/anaconda3/bin/java
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
,所以我对版本一无所知


谢谢你,祝你好运

您报告的错误显示:

仅支持Java1.6-1.8,版本为9

看起来您已经安装了Java9,H2O还不支持它。使用兼容的Java版本,这将修复错误

如果您不能或不想卸载Java 9,那么您需要通过设置
Java\u 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\u HOME
变量:
Sys.getenv(“JAVA\u HOME”)

如果这是空的(如果您使用的是RStudio,则可能是空的),那么需要做更多的工作才能让R看到
JAVA\u HOME
变量。您可以编辑
~/.Renviron
文件以添加
JAVA\u HOME=/Library/JAVA/JavaVirtualMachines/jdk1.8.0\u 45.jdk/Contents/HOME
或计算机上的任何位置。然后重新启动RStudio,它应该会工作。

我按照讨论内容找到问题的解决方案,尽管对某些人来说并不方便

默认的
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
链接它,而不启动
h2o
实例:

h2o.init(startH2O = FALSE) 

如果您可以从终端启动
h2o
(这可能是您在集群上工作的唯一方法),那么这很好,但是如果您想立即从
RStudio
启动它,那么这可能会很烦人。

我显示了
默认的
java是“1.8.0\u 121”。不确定R从哪里得到版本9(注意,它看起来是版本9,而不是1.9,所以我想知道是否有问题)。好的,很抱歉我第一次错过了。我从您最近的编辑中看到,您安装了多个Javas。您可以修改或更新路径以选择Java 8吗?我将$Java_HOME改为指向
/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/HOME
,但问题仍然存在。我不知道如何更改
h2o
想要调用的java!您是否使用RStudio而不是命令行R?我注意到RStudio有时不会拾取环境变量。您可以通过检查
Sys.getenv(“JAVA\u HOME”)
来查看R是否了解
JAVA\u HOME
。如果为空,请尝试使用
Sys.setenv(“JAVA_HOME”)
进行设置?这是一个在黑暗中射击,但可能会做的把戏…是的,这是关键!RStudio设计上不从
.bashrc
读取环境变量(不知道原因是什么)。请编辑您的答案以包含以下信息,我将接受:)。首先,使用
/usr/libexec/java_home-v1.8
获取1.8java的位置。其次,使用该位置编辑
~/.Renviron
并添加
JAVA\u HOME=your\u JAVA\u 1.8\u位置。重新启动RStudio,它就会工作!