Snowflake-kafka connect->错误:由以下原因引起:java.lang.ClassNotFoundException:org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider

问题描述

当我发送发布请求以启动我的kafka雪花连接器时,我收到此错误消息:

[ec2-user@ip-10-0-64-123 tmp]$ curl -X POST -H "Content-Type: application/json" --data @sNowflake.json http://internal-test-dev-alb-39351xyz.eu-central-1.elb.amazonaws.com:80/connectors
<html>
<head>
<Meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<title>Error 500 Request Failed.</title>
</head>
<body><h2>HTTP ERROR 500</h2>
<p>Problem accessing /connectors. Reason:
<pre>    Request Failed.</pre></p><hr><a href="http://eclipse.org/jetty">Powered by Jetty:// 9.4.18.v20190429</a><hr/>

</body>
</html>

当我查看日志时:

Caused by: java.lang.classNotFoundException: org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider
               at java.net.urlclassloader.findClass(urlclassloader.java:382)
               at java.lang.classLoader.loadClass(ClassLoader.java:418)
               at org.apache.kafka.connect.runtime.isolation.PluginClassLoader.loadClass(PluginClassLoader.java:104)
               at java.lang.classLoader.loadClass(ClassLoader.java:351)
               ... 13 more
[2020-09-28 17:21:32,308] WARN /connectors (org.eclipse.jetty.server.HttpChannel:597)
javax.servlet.servletexception: org.glassfish.jersey.server.ContainerException: java.lang.NoClassDefFoundError: org/bouncycastle/jcajce/provider/BouncyCastleFipsProvider
               at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:408)
               at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:346)
               at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:365)
               at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:318)
               at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205)
               at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:873)
               at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:542)
               at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
               at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1700)
               at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
               at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1345)
               at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
               at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480)
               at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1667)
               at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
               at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1247)
               at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
               at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:220)
               at org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:174)
               at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
               at org.eclipse.jetty.server.Server.handle(Server.java:505)
               at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370)
               at org.eclipse.jetty.server.httpconnection.onFillable(httpconnection.java:267)
               at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
               at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
               at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)
               at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
               at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
               at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
               at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
               at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
               at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:698)
               at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:804)
               at java.lang.Thread.run(Thread.java:748)
Caused by: org.glassfish.jersey.server.ContainerException: java.lang.NoClassDefFoundError: org/bouncycastle/jcajce/provider/BouncyCastleFipsProvider
               at org.glassfish.jersey.servlet.internal.ResponseWriter.rethrow(ResponseWriter.java:254)
               at org.glassfish.jersey.servlet.internal.ResponseWriter.failure(ResponseWriter.java:236)
               at org.glassfish.jersey.server.ServerRuntime$Responder.process(ServerRuntime.java:436)
               at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:261)
               at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248)
               at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244)
               at org.glassfish.jersey.internal.Errors.process(Errors.java:292)
               at org.glassfish.jersey.internal.Errors.process(Errors.java:274)
               at org.glassfish.jersey.internal.Errors.process(Errors.java:244)
               at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265)
               at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:232)
               at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:679)
               at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:392)
               ... 33 more
Caused by: java.lang.NoClassDefFoundError: org/bouncycastle/jcajce/provider/BouncyCastleFipsProvider

...

这是我的用于构建连接器的docker文件


FROM openjdk:8-jre

# Add Confluent Repository and install Confluent Platform
RUN wget -qO - http://packages.confluent.io/deb/5.3/archive.key | apt-key add -
RUN echo "deb [arch=amd64] http://packages.confluent.io/deb/5.3 stable main" > /etc/apt/sources.list.d/confluent.list
RUN apt-get update &&  apt-get install -y --no-install-recommends confluent-kafka-connect-* confluent-schema-registry gettext confluent-kafka-2.12
RUN mkdir -p /usr/share/java/kafka-connect-pubsub/
RUN mkdir -p /etc/kafka-connect-pubsub/

# Script to configure properties in varIoUs config files.
copY config-templates/configure.sh /configure.sh
# RUN wget -q -P /usr/share/java/kafka-connect-jdbc/ https://s3.amazonaws.com/datahub-public-repo/ojdbc10.jar
# RUN wget -q -P /usr/share/java/kafka-connect-jdbc/ https://s3.amazonaws.com/datahub-public-repo/mysql-connector-java-5.1.41-bin.jar
# RUN wget -q -P /usr/share/java/kafka-connect-jdbc/ https://s3.amazonaws.com/datahub-public-repo/terajdbc4.jar
# RUN wget -q -P /usr/share/java/kafka-connect-jdbc/ https://s3.amazonaws.com/datahub-public-repo/tdgssconfig.jar
RUN wget -q -P /usr/share/java/ https://repo1.maven.org/maven2/com/sNowflake/sNowflake-kafka-connector/1.4.4/sNowflake-kafka-connector-1.4.4.jar
RUN wget -q -P /usr/share/java/ https://repo1.maven.org/maven2/org/bouncycastle/bc-fips/1.0.2/bc-fips-1.0.2.jar
RUN wget -q -P /usr/share/java/ https://repo1.maven.org/maven2/org/bouncycastle/bcpkix-fips/1.0.4/bcpkix-fips-1.0.4.jar


copY config-templates/connect-standalone.properties.template /etc/kafka/connect-standalone.properties.template
copY config-templates/sNowflake.properties.template /etc/kafka/sNowflake.properties.template
copY config-templates/connect-distributed.properties.template /etc/kafka/connect-distributed.properties.template


# copY config-templates/jdbc-source.properties.template /etc/kafka-connect-jdbc/jdbc-source.properties.template
# copY config-templates/jdbc-sink.properties.template /etc/kafka-connect-jdbc/jdbc-sink.properties.template
# copY config-templates/pubsub-sink-connector.properties.template /etc/kafka-connect-pubsub/pubsub-sink-connector.properties.template
copY config-templates/kafka-run-class /usr/bin/kafka-run-class
# Modify these lines to reflect your client Keystore and Truststore.
# copY replicantSuperUser.kafka.client.keystore.jks /replicantSuperUser.kafka.client.keystore.jks
# copY kafka.client.truststore.jks /tmp/kafka.client.truststore.jks

RUN chmod 755 configure.sh /usr/bin/kafka-run-class
ENTRYPOINT /configure.sh && $KC_CMD && bash

这是我的sNowlight.json

{
   "name":"SNowflaketest","config":{
      "connector.class":"com.sNowflake.kafka.connector.SNowflakeSinkConnector","tasks.max":"8","topics":"dat.slt.isc.incoming.json","buffer.count.records":"10000","buffer.flush.time":"60","buffer.size.bytes":"5000000","sNowflake.url.name":"https://t1234.eu-central-1.sNowflakecomputing.com:443","sNowflake.user.name":"asdf_CONNECT","sNowflake.private.key":"MIIFLTBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIWi2iAjGL9JsCAggAMAw********","sNowflake.private.key.passphrase":"hchajvdzSvcmqamIWe1jvrF***","sNowflake.database.name":"db_SANDBox","sNowflake.schema.name":"LOADDB","key.converter":"org.apache.kafka.connect.storage.StringConverter","value.converter":"com.sNowflake.kafka.connector.records.SNowflakeJsonConverter"
   }
}

有指针吗?

我的猜测是,充气弹药罐没有放置在openjdk的正确位置?是否知道应该将它们放置在哪里,或者是否有其他方法可以解决问题?

任何帮助都将受到高度赞赏。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)