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
后也设置PATH
:export 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的主要内容,如果未能解决你的问题,请参考以下文章