小编给大家分享一下解决kettle无法连接mongodb的方法,相信大部分人都还不怎么了解,因此分享这边文章给大家学习,希望大家阅读完这篇文章后大所收获,下面让我们一起去学习方法吧!

配置好mongodb连接之后,点击预览报下面的错:

报错:

java.lang.NoClassDefFoundError:javax/crypto/spec/PBEKeySpecatcom.mongodb.DBPort$ScramSha1Authenticator$ScramSha1SaslClient.Hi(DBPort.java:822)atcom.mongodb.DBPort$ScramSha1Authenticator$ScramSha1SaslClient.computeClientFinalMessage(DBPort.java:747)atcom.mongodb.DBPort$ScramSha1Authenticator$ScramSha1SaslClient.evaluateChallenge(DBPort.java:681)atcom.mongodb.DBPort$SaslAuthenticator.authenticate(DBPort.java:904)atcom.mongodb.DBPort.authenticate(DBPort.java:432)atcom.mongodb.DBPort.checkAuth(DBPort.java:443)atcom.mongodb.DBTCPConnector.innerCall(DBTCPConnector.java:289)atcom.mongodb.DBTCPConnector.call(DBTCPConnector.java:269)atcom.mongodb.DBCollectionImpl.find(DBCollectionImpl.java:84)atcom.mongodb.DBCollectionImpl.find(DBCollectionImpl.java:66)atcom.mongodb.DBCursor._check(DBCursor.java:498)atcom.mongodb.DBCursor._hasNext(DBCursor.java:621)atcom.mongodb.DBCursor.hasNext(DBCursor.java:657)atorg.pentaho.mongo.wrapper.cursor.DefaultCursorWrapper.hasNext(DefaultCursorWrapper.java:34)atorg.pentaho.di.trans.steps.mongodbinput.MongoDbInput.processRow(MongoDbInput.java:89)atorg.pentaho.di.trans.step.RunThread.run(RunThread.java:62)atjava.lang.Thread.run(Thread.java:745)Causedby:java.lang.ClassNotFoundException:javax.crypto.spec.PBEKeySpecnotfoundbyorg.mongodb.mongo-java-driver[59]atorg.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1532)atorg.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:75)atorg.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1955)atjava.lang.ClassLoader.loadClass(ClassLoader.java:358)...17more

解决办法:

kettle安装文件目录:data-integration\system\karaf\etc\config.properties

文件中下部有一行 org.osgi.framework.bootdelegation=(一堆参数)

在末尾处加上 ,javax.crypto,javax.crypto.*

Mongo就可以正常连接读取数据了。

以上是解决kettle无法连接mongodb的方法的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!