2017-02-21 15 views
0

Я постоянно получаю следующую ошибку при запуске моего кода, который должен подключаться к базе данных mongo с использованием mongolab. У меня также есть попытка catch и ошибка, которую он экспортирует, - ExceptionInitializeError. Пожалуйста, помогите :(NoClassDefFoundError и ExceptionInitializeError

FATAL EXCEPTION: main 
       Process: com.example.chadedwards.projectichnaea, PID: 8451 
       java.lang.NoClassDefFoundError: com/mongodb/connection/ClientMetadataHelper 
        at com.mongodb.connection.InternalStreamConnectionFactory.<init>(InternalStreamConnectionFactory.java:41) 
        at com.mongodb.connection.DefaultClusterableServerFactory.create(DefaultClusterableServerFactory.java:68) 
        at com.mongodb.connection.BaseCluster.createServer(BaseCluster.java:360) 
        at com.mongodb.connection.SingleServerCluster.<init>(SingleServerCluster.java:54) 
        at com.mongodb.connection.DefaultClusterFactory.create(DefaultClusterFactory.java:114) 
        at com.mongodb.Mongo.createCluster(Mongo.java:744) 
        at com.mongodb.Mongo.createCluster(Mongo.java:728) 
        at com.mongodb.Mongo.<init>(Mongo.java:293) 
        at com.mongodb.Mongo.<init>(Mongo.java:288) 
        at com.mongodb.MongoClient.<init>(MongoClient.java:192) 
        at com.mongodb.MongoClient.<init>(MongoClient.java:168) 
        at com.example.chadedwards.projectichnaea.BusAlarmActivity.onCreate(BusAlarmActivity.java:37) 
        at android.app.Activity.performCreate(Activity.java:5231) 
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 
        at android.app.ActivityThread.access$800(ActivityThread.java:135) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:136) 
        at android.app.ActivityThread.main(ActivityThread.java:5017) 
        at java.lang.reflect.Method.invokeNative(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:515) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
        at dalvik.system.NativeStart.main(Native Method) 

мой Gradle

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 25 
    buildToolsVersion "25.0.2" 
    defaultConfig { 
     multiDexEnabled true 
     applicationId "com.example.chadedwards.projectichnaea" 
     minSdkVersion 19 
     targetSdkVersion 25 
     versionCode 1 
     versionName "1.0" 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 

    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 
     exclude group: 'com.android.support', module: 'support-annotations' 
    }) 
    compile 'com.google.android.gms:play-services-maps:10.0.1' 
    compile 'com.android.support:appcompat-v7:25.0.1' 
    compile 'org.mongodb:mongodb-driver:3.4.2' 
    testCompile 'junit:junit:4.12' 
} 

и мой код

package com.example.chadedwards.projectichnaea; 

import android.annotation.SuppressLint; 
import android.app.Activity; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.widget.Toast; 

import com.mongodb.BasicDBObject; 
import com.mongodb.DBCollection; 
import com.mongodb.MongoClient; 
import com.mongodb.MongoClientURI; 
import com.mongodb.MongoCredential; 
import com.mongodb.ServerAddress; 
import com.mongodb.client.MongoDatabase; 

import java.util.Arrays; 

public class BusAlarmActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_bus_alarm); 


     try { 

      //MongoClient mongoClient = new MongoClient("ds063546.mlab.com", 63546); 

      String userName = "admin"; 
      String database = "ichnaea"; 

      char[] password = new char[] {'W', 'e', 'l', 'c', 'o', 'm' , 'e', '1', '2', '3'}; 
      MongoCredential credential = MongoCredential.createCredential(userName, database, password); 
      MongoClient mongoClient = new MongoClient(new ServerAddress("ds063546.mlab.com", 63546), Arrays.asList(credential)); 


      MongoDatabase db = mongoClient.getDatabase("test"); 

      DBCollection coll = (DBCollection) db.getCollection("testCollection"); 

      BasicDBObject doc = new BasicDBObject("name", "MongoDB") 
        .append("type", "database") 
        .append("count", 1) 
        .append("info", new BasicDBObject("x", 203).append("y", 102)); 
      coll.insert(doc); 




    } 
    catch(ExceptionInInitializerError ex){ 

     Toast.makeText(this, ex.toString() , Toast.LENGTH_SHORT).show(); 

    } 

    } 
} 

EDIT - после более устранения неполадок, кажется, проблема начинается в этой линии MongoClient mongoClient = новый MongoClient

ответ

2

Вам не хватает некоторых зависимостей для запуска mongodb-driver.

Добавьте эти строки в gradle.build:

compile group: 'org.mongodb', name: 'mongodb-driver-core', version: '3.4.2' 
compile group: 'org.mongodb', name: 'bson', version: '3.4.2' 

Поместите их после того, как текущих зависимостей.

+1

Или просто зависеть от 'mongo-java-driver', чтобы получить все три неявно. – kennytm

+0

добавлены эти, и все те же проблемы :( Группа компиляции: 'org.mongodb', имя: 'mongodb-driver-core', версия: '3.4.2' группа компиляции: 'org.mongodb', name: 'bson', version: '3.4.2' – Razoe

+0

Кроме того, я видел слухи о пути к классам, может кто-нибудь объяснить это подробно? – Razoe

 Смежные вопросы

  • Нет связанных вопросов^_^