我在深入研究此错误时遇到了一些困难,并且似乎无法通过我的设置找到与此问题相关的任何内容。我确实找到了一些关于一般错误的文章,但经过研究,它们不适用于我的设置。
这是发生的事情......我只是指出它发生在 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 上下文中不可用的环境变量,但我无法弄清楚。
有什么想法吗?
最佳答案
正如@LorinczyZsigmond所说,设置JAVA_HOME后,然后路径(export PATH="$JAVA_HOME/bin:$PATH"有效。谢谢!
关于java - AIX 7.1 crontab 中的 Kafka Producer 出现 JAVA 错误 : Bad Major Version,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53291145/