连接到mongodb时,Android应用程序崩溃了

时间:2017-02-13 17:02:29

标签: android mongodb nullpointerexception

我是Android开发的新手,在我的第一个应用程序中,我正在尝试连接到mongodb。做了什么:

  1. 在Windows 10上安装了最新的Android Studio(2.2.3)。

  2. 为应用程序build.gradle添加了依赖项:

  3. compile 'org.mongodb:mongodb-driver:3.4.2'

    1. 连接到mongodb的代码:

          MongoClientURI mongoUri  = new MongoClientURI("..."); // here specified the connection string that worked fine for desktop mongodb client
          MongoClient mongoClient = new MongoClient(mongoUri);
      
    2. 成功编译和部署到虚拟设备的所有内容。但是当我尝试执行此行时:  new MongoClient(mongoUri);

      抛出异常:

      java.lang.NullPointerException: Attempt to invoke virtual method 'java.security.CodeSource java.security.ProtectionDomain.getCodeSource()' on a null object reference.
      

      在调试中,我可以看到ProtectionDomain实现只返回null。然而,mongodb期望从该方法中获得一些合理的价值。

      根据StackOverflow上的其他问题,似乎人们可以使用这种方法连接到mongodb。我做错了什么?

1 个答案:

答案 0 :(得分:0)

Mongo Java驱动程序不应在Android 上使用,因为它不适用于Android JRE(不是完全 Java JRE)。 Android JRE有一些限制,特别是在加密和安全类方面,这就是Mongo驱动程序无法在Android上运行的原因。

正如cricket_007所建议的,为了支持Android应用,你应该用Java编写一个REST或SOAP API,它使用Mongo驱动程序来获取和操作你的数据,然后用HTTP服务器提供它们。

在Android应用中,您将直接调用REST API而不是Mongo驱动程序。