我刚刚安装了 Ubuntu,并且是 Java 7u55(JDK),并且正在尝试将 JAVA_HOME 配置为环境变量。
我补充说~/.bashrc
:
# Exports
JAVA_HOME=/home/myuser/sandbox/java/7u55/jdk1.7.0_55
export PATH=$PATH:JAVA_HOME
然而,当我关闭终端并打开一个新的 shell 并输入which java
或java -version
Ubuntu 似乎不知道我在说什么(说程序java
可以在几个包之一中找到并提示我使用sudo apt-get
其中一个来安装)。
我究竟做错了什么?
答案1
首先,您在 export 行中输入了错误。应该是
export PATH=$PATH:$JAVA_HOME/bin
没有空格,在JAVA_HOME前添加一个$字符,添加/bin
但是修复上述代码可能无法解决您安装 Java 时遇到的问题。安装 Java 最简单的方法是使用 webup8 ppa:
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java7-installer
在最后一条命令之后,脚本会自动从 Oracle 网站下载 jdk 并安装。你可以阅读教程这里。
答案2
您已经设置了环境变量JAVA_HOME
,但这只是一个供想要知道 JRE 或 JDK 在哪里的应用程序使用的值。
PATH
当您尝试运行可执行文件时,您的 shell 会查找 。因此,当您输入 时,java -version
它会在 JDK 文件夹中查找。请注意,java
实际上是在 里面$JAVA_HOME/bin
。这就是它找不到它的原因。
这就是解释。
修复方法是将其$PATH
正确添加到:
export PATH=$PATH:JAVA_HOME/bin
update-alternatives
或者运行添加 JDK 路径到系统的java替代品。
例如
update-alternatives --install "/usr/bin/java" "java" "/home/myuser/sandbox/java/7u55/jdk1.7.0_55/bin/java" 3
答案3
Sqoop 未找到 jdk,这就是出现此错误的原因。默认情况下使用 jre,并且它没有编译 sqoop 作业所需的 javac 文件。
解决方案:
如果系统上安装了 jdk,则在 hadoop-env.sh 文件中进行相同的配置:
# The java implementation to use. Required.
export JAVA_HOME=/opt/jdk1.8.0_151/
并在 .bash_profile 文件中。
喜欢:
PATH=$PATH:$HOME/.local/bin:$HOME/bin:/opt/jdk1.8.0_151/bin
然后运行 source . .bash_profile
就这样,现在测试 sqoop 作业将正常工作。
答案4
export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")