CouchBase - 在Android Studio中找不到JavaContext

问题描述:

我正在关注instruction以在Android Studio中设置CouchBase。CouchBase - 在Android Studio中找不到JavaContext

问题是JavaContext似乎并不存在。任何想法为什么?

private void test(){ 
    // Enable logging 
    Logger log = Logger.getLogger("app"); 
    log.setLevel(Level.ALL); 
    JavaContext context = new JavaContext(); // THIS LINE DOES NOT COMPILE 
    // Create a manager 
      Manager manager = null; 
      try { 
       manager = new Manager(context, Manager.DEFAULT_OPTIONS); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
    // Create or open the database named app 
      Database database = null; 
      try { 
       database = manager.getDatabase("app"); 
      } catch (CouchbaseLiteException e) { 
       e.printStackTrace(); 
      } 
    // The properties that will be saved on the document 
      Map<String, Object> properties = new HashMap<String, Object>(); 
      properties.put("title", "Couchbase Mobile"); 
      properties.put("sdk", "Java"); 
    // Create a new document 
      Document document = database.createDocument(); 
    // Save the document to the database 
      try { 
       document.putProperties(properties); 
      } catch (CouchbaseLiteException e) { 
       e.printStackTrace(); 
      } 
    // Log the document ID (generated by the database) 
    // and properties 
    log.info(String.format("Document ID :: %s", document.getId())); 
    log.info(String.format("Learning %s with %s", (String) document.getProperty("title"), (String) document.getProperty("sdk"))); 
} 

这里是我的gradle产出:

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.3" 

    defaultConfig { 
     applicationId "com.woxthebox.draglistview.sample" 
     minSdkVersion 11 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
    // workaround for "duplicate files during packaging of APK" issue 
// see https://groups.google.com/d/msg/adt-dev/bl5Rc4Szpzg/wC8cylTWuIEJ 
    packagingOptions { 
     exclude 'META-INF/ASL2.0' 
     exclude 'META-INF/LICENSE' 
     exclude 'META-INF/NOTICE' 
    } 
} 

repositories { 
    jcenter() 
    maven { 
     url "http://files.couchbase.com/maven2/" 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile project(':library') 
    compile 'com.android.support:appcompat-v7:23.3.0' 
    compile 'com.android.support:cardview-v7:23.3.0' 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    //compile 'com.android.support:appcompat-v7:22.1.1' 
    compile 'com.couchbase.lite:couchbase-lite-android:1.3.0' 
} 

编辑:

一些上场后,各地,我发现此代码:

private void test(){ 
     // Enable logging 
     Logger log = Logger.getLogger("app"); 
     log.setLevel(Level.ALL); 
     // JavaContext context = new JavaContext(); 

     // Create a manager 
       Manager manager = null; 
       try { 
        manager = new Manager(new AndroidContext(getApplicationContext()), Manager.DEFAULT_OPTIONS); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
     // Create or open the database named app 
       Database database = null; 
       try { 
        database = manager.getDatabase("app"); 
       } catch (CouchbaseLiteException e) { 
        e.printStackTrace(); 
       } 
     // The properties that will be saved on the document 
       Map<String, Object> properties = new HashMap<String, Object>(); 
       properties.put("title", "Couchbase Mobile"); 
       properties.put("sdk", "Java"); 
     // Create a new document 
       Document document = database.createDocument(); 
     // Save the document to the database 
       try { 
        document.putProperties(properties); 
       } catch (CouchbaseLiteException e) { 
        e.printStackTrace(); 
       } 
     // Log the document ID (generated by the database) 
     // and properties 
     log.info(String.format("Document ID :: %s", document.getId())); 
     log.info(String.format("Learning %s with %s", (String) document.getProperty("title"), (String) document.getProperty("sdk"))); 
    } 

有人能解释什么是错的原来的指示?

+1

我有Couchbase文档质量很差的经验。它看起来像根据Github项目在主分支中不存在“JavaContext”。所以,请尝试从这里开始。 http://developer.couchbase.com/documentation/mobile/1.2/develop/training/build-first-android-app/starter-code-android/index.html –

+2

为此抱歉,它已在https:/ /今天更新/github.com/couchbaselabs/couchbase-mobile-portal/commit/84713c4ed1659c365f06b9c7df41cb2b0778f50e,现在应该发布。 – jamiltz

有人可以解释原指令有什么问题吗?

可能编写文档的人不知道Android Couchbase Lite的AndroidContext

对于标准的Java(embedded?)项目,实际上有一个JavaContext

Github上的入门代码实际上也使用AndroidContext,因此页面错误。

看到这里的(貌似正确的)Couchbase Android - Getting Started Guide

+0

谢谢,这是一个很好的教训。请注意文档... – jhegedus

+0

文档已更新。 – Hod