java.lang.NoClassDefFoundError: 无法初始化类 com.google.pubsub.v1.ProjectTopicName

huangapple 未分类评论48阅读模式
英文:

java.lang.NoClassDefFoundError: Could not initialize class com.google.pubsub.v1.ProjectTopicName

问题

我正在尝试将 Kafka 与 Google PubSub 集成,使用此处提供的 CloudPubSubConnector:https://github.com/GoogleCloudPlatform/pubsub/tree/master/kafka-connector#cloudpubsubconnector-configs
本地托管 Kafka 服务器在我的机器上运行。
当我运行连接器时,我得到以下堆栈跟踪:

[2020-05-29 15:20:01,678] 错误 WorkerSinkTask{id=CPSSinkConnector-9} 任务引发了一个未捕获且无法恢复的异常 (org.apache.kafka.connect.runtime.WorkerTask:186)
java.lang.NoClassDefFoundError: 无法初始化类 com.google.pubsub.v1.ProjectTopicName
	at com.google.pubsub.kafka.sink.CloudPubSubSinkTask.createPublisher(CloudPubSubSinkTask.java:353)
	at com.google.pubsub.kafka.sink.CloudPubSubSinkTask.start(CloudPubSubSinkTask.java:143)
	at org.apache.kafka.connect.runtime.WorkerSinkTask.initializeAndStart(WorkerSinkTask.java:305)
	at org.apache.kafka.connect.runtime.WorkerSinkTask.execute(WorkerSinkTask.java:193)
	at org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:184)
	at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:234)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:834)
[2020-05-29 15:20:01,678] 信息 创建了连接器 CPSSinkConnector (org.apache.kafka.connect.cli.ConnectStandalone:112)
[2020-05-29 15:20:01,678] 错误 WorkerSinkTask{id=CPSSinkConnector-9} 任务正在被终止,只有在手动重新启动后才能恢复 (org.apache.kafka.connect.runtime.WorkerTask:187)
[2020-05-29 15:20:01,678] 信息 正在停止 CloudPubSubSinkTask (com.google.pubsub.kafka.sink.CloudPubSubSinkTask:386)

我正在尝试理解问题出在哪里。如果我在 GCP VM 上托管 Kafka,则连接器正常工作。我的 Maven 依赖关系似乎已正确设置,但由于某种原因找不到 ProjectTopicName 类。

更新:问题已解决
使用 Kafka 版本 2.4.1 而不是 2.5.0 时,此问题不再存在。

英文:

I am working on integrating Kafka with Google PubSub by using the CloudPubSubConnector provided here: https://github.com/GoogleCloudPlatform/pubsub/tree/master/kafka-connector#cloudpubsubconnector-configs
with a locally hosted Kafka server running on my machine.
When I run the connector, I get the following stack trace:

[2020-05-29 15:20:01,678] ERROR WorkerSinkTask{id=CPSSinkConnector-9} Task threw an uncaught and unrecoverable exception (org.apache.kafka.connect.runtime.WorkerTask:186)
java.lang.NoClassDefFoundError: Could not initialize class com.google.pubsub.v1.ProjectTopicName
	at com.google.pubsub.kafka.sink.CloudPubSubSinkTask.createPublisher(CloudPubSubSinkTask.java:353)
	at com.google.pubsub.kafka.sink.CloudPubSubSinkTask.start(CloudPubSubSinkTask.java:143)
	at org.apache.kafka.connect.runtime.WorkerSinkTask.initializeAndStart(WorkerSinkTask.java:305)
	at org.apache.kafka.connect.runtime.WorkerSinkTask.execute(WorkerSinkTask.java:193)
	at org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:184)
	at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:234)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:834)
[2020-05-29 15:20:01,678] INFO Created connector CPSSinkConnector (org.apache.kafka.connect.cli.ConnectStandalone:112)
[2020-05-29 15:20:01,678] ERROR WorkerSinkTask{id=CPSSinkConnector-9} Task is being killed and will not recover until manually restarted (org.apache.kafka.connect.runtime.WorkerTask:187)
[2020-05-29 15:20:01,678] INFO Stopping CloudPubSubSinkTask (com.google.pubsub.kafka.sink.CloudPubSubSinkTask:386)

I am trying to understand what the issue is. The connector works fine if I host Kafka on a GCP VM, and my maven dependencies seem to be set up correctly, but it can't find the ProjectTopicName class for some reason.

UPDATE: RESOLVED
This issue does not persist when using Kafka version 2.4.1 instead of 2.5.0

答案1

得分: 0

看起来 ProjectTopicNamegoogle-cloud-pubsub 版本 1.104.0 中被意外地弃用,然后重新启用了。您是否可以使用 TopicName 替代,或者更新该库?

英文:

It looks like ProjectTopicName was accidentally deprecated and reinstated in google-cloud-pubsub version 1.104.0. Are you able to use TopicName instead, or update the library?

huangapple
  • 本文由 发表于 2020年5月30日 03:31:04
  • 转载请务必保留本文链接:https://java.coder-hub.com/62093403.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定