【发布时间】:2017-03-09 13:17:53
【问题描述】:
我正在通过 Oozie 从 shell 脚本运行 java 程序,但出现以下错误
java: command not found
当我从边缘节点运行 shell 脚本时,我没有发现任何问题,并且 java 类运行时没有任何错误,我也得到了所需的输出。但是,无法运行 java 命令的是 oozie 作业。
oozie 中的所有其他操作都被正确执行,但是当它遇到java 行时,它会抛出上述错误。我知道Hadoop集群中的所有节点都安装了Java,那为什么会出现这个错误?
下面是我的 shell 脚本中的 java 命令
...
...
java -cp $LOCAL_DIR/libs/integration-tools.jar com.audit.reporting.GenerateExcelReport $LOCAL_DIR/input.txt $LOCAL_DIR/
...
请提供您的想法。
【问题讨论】:
-
java: command not found一般表示你的PATH不包含java命令的位置。对比一下这个环境下的echo "$PATH"和可以成功调用JVM的环境下的echo "$PATH"。 -
...当然,Java 可能已安装,但问题是它的安装位置是否当前在手头进程的 PATH 中我>。许多操作系统将 JVM 安装在
/usr/lib/jvm/java8-jre-bin之类的位置,而守护进程可能在其 PATH 中没有该位置(无论确切的相关/正确位置是什么)。 -
顺便说一句——全大写的名字用于对操作系统或shell有意义的变量,而至少有一个小写字符的名字保留给应用程序使用,以防止应用程序覆盖有意义的变量错误的名字。请参阅pubs.opengroup.org/onlinepubs/9699919799/basedefs/… 上的相关 POSIX 规范