安装 kafka 连接器时出现 ConfluenceHubClient 异常

问题描述 投票:0回答:4

我已经设置了 Kafka 集群并在

confluent-hub
实例上安装了
EC2
。我已经下载了
confluent-hub
tar 文件,解压并将二进制文件放入
/usr/local/bin
中。

当我现在尝试安装任何连接器时,我收到 ClassNotFoundException。

[ec2-user@ip-172-31-88-110 bin]$ confluent-hub install confluentinc/kafka-connect-jdb c:latest --component-dir /opt/connectors --worker-configs /etc/kafka/connect.properties

/usr/local/bin/confluent-hub: line 13: cd: /usr/local/bin/../share/java: No such file or directory
Error: Could not find or load main class io.confluent.connect.hub.cli.ConfluentHubClient
Caused by: java.lang.ClassNotFoundException: io.confluent.connect.hub.cli.ConfluentHubClient

我哪里出错了?

apache-kafka-connect confluent-platform mongodb-kafka-connector
4个回答
23
投票

操作系统:macOS 12.4

我遇到了类似的错误:

/opt/homebrew/bin/confluent-hub: line 13: cd: /opt/homebrew/bin/../share/java: No such file or directory Error: Could not find or load main class io.confluent.connect.hub.cli.ConfluentHubClient

我可以看到

/opt/homebrew/bin/confluent-hub
具有指向
/opt/homebrew/Caskroom/confluent-hub-client/7.1.1/bin/confluent-hub
的符号链接。然后我查看了
/opt/homebrew/Caskroom/confluent-hub-client/7.1.1/bin/confluent-hub
文件中的代码:

#!/usr/bin/env bash

# (Copyright) [2018 - 2018] Confluent, Inc.

base_dir=$(dirname $0)

if [ -L /usr/local/bin/confluent-hub ]; then <<= line 9: I don't have this file and it should be a symbolic link to /opt/homebrew/Caskroom/confluent-hub-client/7.1.1/bin/confluent-hub
    #brew cask installation
    base_dir=$(dirname $( ls -l /usr/local/bin/confluent-hub | awk '{print $11}' ))
    #base_dir refers to Caskrooom/confluent-hub-client
fi
#cd -P deals with symlink from /bin to /usr/bin
java_base_dir=$( cd -P "$base_dir/../share/java" && pwd ) <<= line 13: where error thrown
HUB_CLI_CLASSPATH="${HUB_CLI_CLASSPATH}:${java_base_dir}/confluent-hub-client/*"
BIN_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

exec java -cp "${HUB_CLI_CLASSPATH}" -Dbin.abs.path="${BIN_DIR}" io.confluent.connect.hub.cli.ConfluentHubClient "$@"

由于第 9 行没有这样的文件/符号链接,因此代码直接跳转到第 13 行并开始抱怨找不到 java 二进制文件。如果不进入 if 语句,当前的 $base_dir =

/opt/homebrew/bin
并且没有
/opt/hombrew/share/java
文件。

实际上java文件位于

/opt/homebrew/Caskroom/confluent-hub-client/7.1.1/share/java/
。我们必须让代码进入 if 语句内部,以便 $base_dir 可以被覆盖以使用从
/opt/homebrew/Caskroom/confluent-hub-client/7.1.1/bin
开始的正确路径。

为了保证代码在if else语句内部执行,我手动创建了一个符号链接:

sudo ln -s /opt/homebrew/Caskroom/confluent-hub-client/<CONFLUENT-HUB-VERSION>/bin/confluent-hub /usr/local/bin/confluent-hub
。然后问题解决了。


0
投票

二进制文件存在于

/usr/bin
中。我从该位置删除了该文件,它开始工作。


0
投票

转到/opt/homebrew/Caskroom/confluence-hub-client/

将 7.1.2 或任何其他重命名为 7.1.1

现在转到/opt/homebrew/Caskroom/confluence-hub-client/7.1.1/

复制“share”文件夹并粘贴到 /opt/homebrew/Caskroom/confluence-hub-client/7.1.1/bin 中


0
投票

操作系统:Windows

我下载了 tar 文件,解压缩并将

bin
目录(二进制文件)的内容添加到我的
PATH
环境变量中 为了验证安装,我执行了 confluence-hub 命令 [用户@ip-xx]~ $ 汇合中心

我只收到以下错误

Error: Could not find or load main class io.confluent.connect.hub.cli.ConfluentHubClient Caused by: java.lang.ClassNotFoundException: io.confluent.connect.hub.cli.ConfluentHubClient

$ 哪个汇合中心 正确指向 confluence-x.x.0/bin/confluence-hub 位置

我的环境变量配置如下

JAVA_HOME:C:\ Program Files \ AdoptOpenJDK \ jdk-11.0.10.9-hotspot

CONFLUENT_HOME:C:\Users�

© www.soinside.com 2019 - 2024. All rights reserved.