配置好mongodb连接之后,点击预览报下面的错:
报错:
java.lang.NoClassDefFoundError: javax/crypto/spec/PBEKeySpec at com.mongodb.DBPort$ScramSha1Authenticator$ScramSha1SaslClient.Hi(DBPort.java:822) at com.mongodb.DBPort$ScramSha1Authenticator$ScramSha1SaslClient.computeClientFinalMessage(DBPort. java:747) at com.mongodb.DBPort$ScramSha1Authenticator$ScramSha1SaslClient.evaluateChallenge(DBPort.java:681) at com.mongodb.DBPort$SaslAuthenticator.authenticate(DBPort.java:904) at com.mongodb.DBPort.authenticate(DBPort.java:432) at com.mongodb.DBPort.checkAuth(DBPort.java:443) at com.mongodb.DBTCPConnector.innerCall(DBTCPConnector.java:289) at com.mongodb.DBTCPConnector.call(DBTCPConnector.java:269) at com.mongodb.DBCollectionImpl.find(DBCollectionImpl.java:84) at com.mongodb.DBCollectionImpl.find(DBCollectionImpl.java:66) at com.mongodb.DBCursor._check(DBCursor.java:498) at com.mongodb.DBCursor._hasNext(DBCursor.java:621) at com.mongodb.DBCursor.hasNext(DBCursor.java:657) at org.pentaho.mongo.wrapper.cursor.DefaultCursorWrapper.hasNext(DefaultCursorWrapper.java:34) at org.pentaho.di.trans.steps.mongodbinput.MongoDbInput.processRow(MongoDbInput.java:89) at org.pentaho.di.trans.step.RunThread.run(RunThread.java:62) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.ClassNotFoundException: javax.crypto.spec.PBEKeySpec not found by org.mongodb.mongo- java-driver [59] at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl. java:1532) at org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:75) at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1955) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ... 17 more
解决办法:
kettle安装文件目录:data-integration\system\karaf\etc\config.properties
文件中下部有一行 org.osgi.framework.bootdelegation=(一堆参数)
在末尾处加上 ,javax.crypto,javax.crypto.*
Mongo就可以正常连接读取数据了。
python学习网,大量的免费MongoDB入门教程,欢迎在线学习!