AIX 7.1 crontab 中的 Kafka Producer 收到 JAVA 错误:Bad Major Version

Posted

技术标签:

【中文标题】AIX 7.1 crontab 中的 Kafka Producer 收到 JAVA 错误:Bad Major Version【英文标题】:Kafka Producer in AIX 7.1 crontab getting a JAVA error: Bad Major Version 【发布时间】:2019-04-16 21:14:07 【问题描述】:

我在深入研究此错误时遇到了一些困难,而且我的设置似乎找不到与此问题相关的任何内容。我确实找到了一些关于一般错误的文章,但经过研究,它们不适用于我的设置。

这就是发生的事情......我只是指出它发生在 IBM AIX 7.1 上,以防我应该查看 AIX 特定的任何内容,但我想这个错误也可能发生在 Linux 机器上。

目标:

运行命令,将命令通过管道传递给 kafka-console-producer.sh 到特定的 Kafka 主题,例如:

    ps -ef | /kafka/bin/kafka-console-producer.sh --broker-list <IP>:9092 --topic running_processes

上面的命令获取“ps -ef”的输出并将其发送到我的主题(running_processes)。 如果我在通过 shell 登录系统时运行它,它可以正常工作,没有任何问题。

但是,如果我在每 5 分钟运行一次的 crontab 条目中执行与脚本完全相同的操作,如下所示:

    0,5,10,15,20,25,30,35,40,45,50,55 <path of script> >> <path of log> 2>&1

这是我在日志文件中得到的:

    ...
    Exception in thread "main" java.lang.UnsupportedClassVersionError: JVMCFRE003 bad major version; class=org/apache/kafka/clients/producer/Callback, offset=6
    ...

我的第一个猜测是没有为 crontab 的上下文设置 JAVA_HOME 环境变量,所以我在脚本中手动添加了该环境变量以确保 JAVA_HOME 被保存。

此外,我查看了 kafka/bin/kafka-run-class.sh 文件并查看了其他可能起作用的变量,因为毕竟 kafka-console-producer.sh 确实引用了该文件。例如,我手动将该文件中引用的 JAVA_MAJOR_VERSION 设置为脚本的一部分。

仍然没有运气。同样,在这里绞尽脑汁的是,作为一个普通用户登录到 shell,如果我运行脚本,它就可以工作。仅在使用 crontab 间隔调度脚本时不起作用。

一切都指向我在 crontab 上下文中不可用的一些环境变量,但我无法弄清楚。

有什么想法吗?

【问题讨论】:

设置JAVA_HOME后也设置PATHexport PATH="$JAVA_HOME/bin:$PATH" 【参考方案1】:

正如@LorinczyZsigmond 所说,在设置 JAVA_HOME 之后,路径 (export PATH="$JAVA_HOME/bin:$PATH" 起作用了。谢谢!

【讨论】:

以上是关于AIX 7.1 crontab 中的 Kafka Producer 收到 JAVA 错误:Bad Major Version的主要内容,如果未能解决你的问题,请参考以下文章

AIX 7.1 中的 Cron 作业在错误的时间运行

无法从 crontab 中对文件进行分类 - 猫:0652-050 ​​- unix AIX

AIX 的 Crontab @reboot

aix 7.1安装sudo

aix 7.1 中缺少 getopt.h

aix crontab 每小时执行怎么设置