|
Hi yugeshwor09@gmail.com,
Unfortunately Android, while Java-like, is not actually Java, and so does not support all the JDK APIs that are required by the Java API specification and also required for full use of the Java driver. In this case you're running into Android's lack of support javax.naming. While you could work around that by replacing your mongodb+srv URI scheme with a mongodb scheme, you will run into another problem: Android also does not support SCRAM-SHA256 authentication, on which the driver also depends.
Typically, what most users do is introduce an HTTP REST API layer on top of MongoDB, and use that for their mobile applications. That way, MongoDB usage remains on the server. MongoDB's Stitch service takes this approach, and now comes with a MongoDB Mobile service which lets you build applications with an instance of MongoDB running in Android itself.
Regards,
Jeff
|
|
This line of code to connect to cluster causes error:
MongoClients.create("mongodb+srv:/sampleUserName:samplePassword@cluster0-sgwno.mongodb.net/test?retryWrites=true")
Following is the full errors on the statement:
java.lang.NoClassDefFoundError: Failed resolution of: Ljavax/naming/directory/InitialDirContext;
at com.mongodb.internal.dns.DefaultDnsResolver.createDnsDirContext(DefaultDnsResolver.java:150)
at com.mongodb.internal.dns.DefaultDnsResolver.resolveAdditionalQueryParametersFromTxtRecords(DefaultDnsResolver.java:112)
at com.mongodb.ConnectionString.<init>(ConnectionString.java:371)
at com.mongodb.client.MongoClients.create(MongoClients.java:61)
at com.services.azuob.curatrip.presenter.RegistrationPresenter.connectToCluster(RegistrationPresenter.kt:9)
at com.services.azuob.curatrip.activity.MainActivity$onCreate$1.run(MainActivity.kt:17)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6942)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
Caused by: java.lang.ClassNotFoundException: Didn't find class "javax.naming.directory.InitialDirContext" on path: DexPathList[[zip file "/data/app/com.services.azuob.curatrip-KhIJVxFovgVU7JlXhERTDg==/base.apk", zip file "/data/app/com.services.azuob.curatrip-KhIJVxFovgVU7JlXhERTDg==/split_lib_dependencies_apk.apk", zip file "/data/app/com.services.azuob.curatrip-KhIJVxFovgVU7JlXhERTDg==/split_lib_resources_apk.apk", zip file "/data/app/com.services.azuob.curatrip-KhIJVxFovgVU7JlXhERTDg==/split_lib_slice_0_apk.apk", zip file "/data/app/com.services.azuob.curatrip-KhIJVxFovgVU7JlXhERTDg==/split_lib_slice_1_apk.apk", zip file "/data/app/com.services.azuob.curatrip-KhIJVxFovgVU7JlXhERTDg==/split_lib_slice_2_apk.apk", zip file "/data/app/com.services.azuob.curatrip-KhIJVxFovgVU7JlXhERTDg==/split_lib_slice_3_apk.apk", zip file "/data/app/com.services.azuob.curatrip-KhIJVxFovgVU7JlXhERTDg==/split_lib_slice_4_apk.apk", zip file "/data/app/com.services.azuob.curatrip-KhIJVxFovgVU7JlXhERTDg==/split_lib_slice_5_apk.apk", zip file "/data/app/com.services.azuob.curatrip-KhIJVxFovgVU7JlXhERTDg==/split_lib_slice_6_apk.apk", zip file "/data/app/com.services.azuob.curatrip-KhIJVxFovgVU7JlXhERTDg==/split_lib_slice_7_apk.apk", zip file "/data/app/com.services.azuob.curatrip-KhIJVxFovgVU7JlXhERTDg==/split_lib_slice_8_apk.apk", zip file "/data/app/com.services.azuob.curatrip-KhIJVxFovgVU7JlXhERTDg==/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/com.services.azuob.curatrip-KhIJVxFovgVU7JlXhERTDg==/lib/arm64, /system/lib64, /system/vendor/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:93)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at com.mongodb.internal.dns.DefaultDnsResolver.createDnsDirContext(DefaultDnsResolver.java:150)
at com.mongodb.internal.dns.DefaultDnsResolver.resolveAdditionalQueryParametersFromTxtRecords(DefaultDnsResolver.java:112)
at com.mongodb.ConnectionString.<init>(ConnectionString.java:371)
at com.mongodb.client.MongoClients.create(MongoClients.java:61)
at com.services.azuob.curatrip.presenter.RegistrationPresenter.connectToCluster(RegistrationPresenter.kt:9)
at com.services.azuob.curatrip.activity.MainActivity$onCreate$1.run(MainActivity.kt:17)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6942)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
Suppressed: java.io.IOException: No original dex files found for dex location (arm64) /data/app/com.services.azuob.curatrip-KhIJVxFovgVU7JlXhERTDg==/split_lib_resources_apk.apk
at dalvik.system.DexFile.openDexFileNative(Native Method)
at dalvik.system.DexFile.openDexFile(DexFile.java:353)
at dalvik.system.DexFile.<init>(DexFile.java:100)
at dalvik.system.DexFile.<init>(DexFile.java:74)
at dalvik.system.DexPathList.loadDexFile(DexPathList.java:374)
at dalvik.system.DexPathList.makeDexElements(DexPathList.java:337)
at dalvik.system.DexPathList.<init>(DexPathList.java:157)
at dalvik.system.BaseDexClassLoader.<init>(BaseDexClassLoader.java:65)
at dalvik.system.PathClassLoader.<init>(PathClassLoader.java:64)
at com.android.internal.os.PathClassLoaderFactory.createClassLoader(PathClassLoaderFactory.java:43)
at android.app.ApplicationLoaders.getClassLoader(ApplicationLoaders.java:69)
at android.app.ApplicationLoaders.getClassLoader(ApplicationLoaders.java:36)
at android.app.LoadedApk.createOrUpdateClassLoaderLocked(LoadedApk.java:678)
2019-03-25 08:30:11.361 20892-20892/com.services.azuob.curatrip E/AndroidRuntime: at android.app.LoadedApk.getClassLoader(LoadedApk.java:711)
at android.app.LoadedApk.getResources(LoadedApk.java:944)
at android.app.ContextImpl.createAppContext(ContextImpl.java:2303)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5943)
at android.app.ActivityThread.-wrap1(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1764)
at android.os.Handler.dispatchMessage(Handler.java:105)
... 5 more
|