2017-05-26 42 views
0

我在我的項目中使用了greendao來維護本地數據庫。無法在android studio中運行greendao生成器類文件

項目的build.gradle

buildscript { 
    ext.kotlin_version = '1.1.2-4' 
    repositories { 
     maven { 
      url 'https://maven.google.com' 
     } 
     jcenter() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:3.0.0-alpha1' 
     classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 
     classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' 
    } 
} 

allprojects { 
    repositories { 
     jcenter() 
    } 
} 

task clean(type: Delete) { 
    delete rootProject.buildDir 
} 

應用的build.gradle

apply plugin: 'com.android.application' 
apply plugin: 'kotlin-android' 
apply plugin: 'org.greenrobot.greendao' 

... 

dependencies {... 
compile 'org.greenrobot:greendao:3.2.2' 
    compile project(':greendaolib') 
} 

Greendaolib的build.gradle

apply plugin: 'java' 

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    compile 'org.greenrobot:greendao-generator:3.2.2' 
} 


public class MainGenerator { 

    public static void main(String[] args) throws Exception { 

     //place where db folder will be created inside the project folder 
     Schema schema = new Schema(1,"com.v_empowr.voicestry.database"); 

     //Entity i.e. Class to be stored in the database // ie table LOG 
     Entity word_entity= schema.addEntity("LOG"); 

     word_entity.addIdProperty(); //It is the primary key for uniquely identifying a row 

     word_entity.addStringProperty("text").notNull(); //Not null is SQL constrain 

     // ./app/src/main/java/ ---- com/codekrypt/greendao/db is the full path 
     new DaoGenerator().generateAll(schema, "./app/src/main/java"); 

    } 
} 

錯誤信息,同時運行程序

Exception in thread "main" java.lang.NoClassDefFoundError: org/greenrobot/greendao/generator/Schema 
    at com.example.MainGenerator.main(MainGenerator.java:12) 
Caused by: java.lang.ClassNotFoundException: org.greenrobot.greendao.generator.Schema 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    ... 1 more 

我在這裏使用 的Android 3.0工作室金絲雀1個 構建#AI-171.4010489,建於2017年5月16日 JRE:1.8.0_112釋放-736 AMD64 JVM:OpenJDK的64位服務器VM通過JetBrains的SRO Windows 7 6.1

所以請建議我解決問題。

回答

0
在應用

:的build.gradle

android { 
.. 

sourceSets { 
     main{ 
      java.srcDirs = ['src/main/java','src/main/java-gen','../greendaolib/classes'] 

     } 
    } 
} 

在greendaolib buld.gradle

project(":greendaolib") 
     { 
      apply plugin: 'java' 
      apply plugin: 'application' 

      mainClassName = 'your main class full path' 
      outputDatabase = 'classes/' 

      dependencies { 
       compile fileTree(include: ['*.jar'], dir: 'libs') 
       compile 'org.greenrobot:greendao-generator:3.2.2' 
      } 

      task createDirs { 
       def dir = file(outputDatabase) 
       dir.mkdir() 
      } 
      run { 
       args outputDatabase 
      } 
     } 

在最後運行的類 Go to right side gradle, and click on greendaolib->Tasks->application->run

相關問題