在远程计算机linux上找不到java命令

在远程计算机linux上找不到java命令,java,linux,bash,apache-spark,java-8,Java,Linux,Bash,Apache Spark,Java 8,我尝试在集群独立模式下运行spark应用程序,当我访问一些远程机器并使用“java-version”命令时,我得到了信息(java-version..),但在其他机器上我得到了一个错误 -bash:找不到命令 所以我认为这些节点上可能没有安装java,所以我尝试了: sudo apt -get install openjdk-8-jdk 但我也有同样的错误,所以我想知道如何修复这个问题,我有一些问题: -有必要在所有远程机器上安装java吗?或者如果我只在主节点上安装它就足够了 -如果我必须在

我尝试在集群独立模式下运行spark应用程序,当我访问一些远程机器并使用“java-version”命令时,我得到了信息(java-version..),但在其他机器上我得到了一个错误

-bash:找不到命令

所以我认为这些节点上可能没有安装java,所以我尝试了:

sudo apt -get install openjdk-8-jdk
但我也有同样的错误,所以我想知道如何修复这个问题,我有一些问题:

-有必要在所有远程机器上安装java吗?或者如果我只在主节点上安装它就足够了

-如果我必须在每个节点上安装它,如何修复我之前解释的问题?(无法使用安装命令…)

-在我的代码中,我使用了仅jdk 8支持的表达式,但有些节点(我可以在其中获得“java版本”)安装了jdk7,所以我必须重新安装jdk8吗?

“command not found”错误意味着在$PATH系统变量中列出的两个目录中都找不到您试图调用的特定命令

有两种方法可以解决此问题:

1) 运行可执行文件时指定完整路径:

/opt/jdk-12345/bin/java -version
2) 将完全相同的路径添加到路径的开头(更改将仅应用于当前会话):

要永久修复此问题,请将该行(
export PATH=/opt/jdk-12345/bin:$PATH
)添加到~/.bashrc(如果BASH是该用户的默认shell)或~/.profile

另外,由于这是Unix Java,如果您正在运行某些服务器应用程序,请确保设置LD_LIBRARY_PATH和CLASSPATH变量。通常这是在应用程序启动脚本中完成的,不需要全局执行


请验证您正在运行的服务器操作系统(
uname-a
/bin/uname-a
),因为不同的Unix系统有不同的包管理器:apt-get用于Ubuntu/Debian,rpm用于RedHat,Entropy用于Sabayon/Gentoo,等等。

我不相信您在使用
sudo-apt-get时会遇到“相同的错误”
(确保
apt-get
vs
apt-get
)。如果是这样,请检查您使用的是基于.deb的发行版(
uname-a
应显示ubuntu或debian)-bash:sudo:command未找到,这是作为error@Mickaël B,不,这不是因为我已经检查了itI,我不知道spark,但这里有一些回应:1)不仅必须安装
java
,其二进制文件目录必须包含在
$PATH
环境变量中,以便
bash
能够在任何地方执行它,而无需指定其绝对路径;2) jdk7将无法执行特定于Java8的代码,但您可以在同一台机器上安装多个jdk;但是,在
$PATH
@Aaron中只能引用一个路径。我如何将路径从jdk7更改为jdk8?使用命令行?那个链接有用吗?这有点错误,您应该在
$PATH
的开头而不是结尾插入二进制文件,因为
bash
将使用它找到的第一个引用。这在jdk7已经安装并且在path中并且OP想要添加jdk8的情况下尤为重要。看见它无法执行该程序,可能是由于ideone特有的原因,但您可以从
stderr
中看到,它试图执行第一个而不是最后一个。@Aaron请您正确编写它好吗?我编辑了@the.Legend的答案谢谢,它成功了:)
export PATH=/opt/jdk-12345/bin:$PATH
java -version