>错误:原因:java.lang.classnotfoundexception:org.bouncycastle.jcajce.provider.bouncycastlefipsprovider

emeijp43  于 2021-06-04  发布在  Kafka
关注(0)|答案(0)|浏览(354)

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

[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

这是我的雪花.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"
   }
}

有指针吗?
我猜bouncycastlejar没有放在openjdk的正确位置?你知道应该把它们放在哪里,或者有没有其他方法来解决问题?
任何帮助都将不胜感激。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题