启动hbase时无法找到JAVA_HOME,有什么建议吗?

3

我正在玩弄HBase(在EC2上),但是在启动时遇到了问题。以下是出现的错误信息:

[root@domU-12-31-39-13-D6-62 ~]# sudo /etc/init.d/hadoop-hbase-master start
+======================================================================+
|      Error: JAVA_HOME is not set and Java could not be found         |
+----------------------------------------------------------------------+
| Please download the latest Sun JDK from the Sun Java web site        |
|       > http://java.sun.com/javase/downloads/ <                      |
|                                                                      |
| HBase requires Java 1.6 or later.                                    |
| NOTE: This script will find Sun Java whether you install using the   |
|       binary or the RPM based installer.                             |
+======================================================================+

我查找了错误并安装了openjdk 1.6,并在我的.bash_profile和/etc/profile中设置了java_home变量(以防万一hbase正在以不同的用户身份运行)。看起来已经生效:

[root@domU-12-31-39-13-D6-62 ~]# java -version
java version "1.6.0_22"
OpenJDK Runtime Environment (IcedTea6 1.10.4) (rhel-1.42.1.10.4.el6_2-x86_64)
OpenJDK 64-Bit Server VM (build 20.0-b11, mixed mode)
[root@domU-12-31-39-13-D6-62 ~]# echo $JAVA_HOME
/usr/bin/java

但是当我启动hbase时,仍然会出现这个错误。我对Java不是很熟悉,所以不确定自己做错了什么。如果有帮助的话,我在EC2上使用CentOS6和Cloudera的HBase/Hadoop软件包存储库。

5个回答

7

JAVA_HOME不应该指向java可执行文件,而应该指向其他Java文件所在的位置。

我认为应该是/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/。你可以使用update-alternatives --display java命令来显示所有已安装的Java版本。


仍然没有成功,我按照update-alternatives --display java中的位置将JAVA_HOME更改为/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin,但仍然没有成功。当我从该路径启动时它可以工作,但当我直接从命令行启动时却不行。 - Lostsoul
2
不是bin文件夹,而是bin文件夹上一层的文件夹!export JAVA_HOME=/usr/lib/jvm/jre-1.6.0-openjdk.x86_64 - Peter Svensson
搞定了!非常感谢,彼得。所以只是为了我的了解,包想知道顶层文件夹,这样它们才能在其中找到 bin/lib 等,而不仅仅是可执行文件,然后从那里开始工作?或者这只适用于 Java? - Lostsoul
2
想知道一件奇怪的事吗?当我在命令前面不加sudo运行命令时,它可以工作,但是当我使用sudo然后再运行命令时,我仍然会收到java_home错误。太奇怪了。 - Lostsoul

2

请检查您的脚本/etc/init.d/hadoop-hbase-master,并查看它在哪里尝试找到Java,您也可以以调试模式运行它。

sh -x /etc/init.d/hadoop-hbase-master start


谢谢,这很有帮助。指引我朝着正确的方向,这是错误信息:“/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/bin/java: No such file or directory”。路径中多了一个bin,但是它从哪里来的呢?我的.bash_profile没问题。 - Lostsoul

1

如果您已经在bashrc中设置了JAVA_HOME,但仍然无法正常工作,请尝试在/etc/environment文件中设置它。


0
可能 $JAVA_HOME 指向的是 JRE 的目录,请检查确认 bin 目录下是否存在 javac。

0

如果您想快速检查,可以在/etc/init.d/hadoop-hbase-master脚本中硬编码您的JAVA路径。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接