首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在android studio中运行greendao生成器类文件

无法在android studio中运行greendao生成器类文件
EN

Stack Overflow用户
提问于 2017-05-26 14:46:11
回答 1查看 928关注 0票数 0

我在我的项目中使用了greendao来维护本地数据库。

项目build.gradle

代码语言:javascript
复制
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

代码语言:javascript
复制
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')
}

格林道利布build.gradle

代码语言:javascript
复制
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");

    }
}

运行程序时出现错误信息

代码语言:javascript
复制
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 Studio 3.0 Canary 1 Build #AI-171.4010489,构建于2017.5.16 JRE: 1.8.0_112-release-736 amd64 JVM: OpenJDK 64位服务器VM,由JetBrains s.r.o Windows7 6.1开发

所以请给我一些建议来解决问题。

EN

回答 1

Stack Overflow用户

发布于 2017-05-27 15:24:58

在app:build.gradle中

代码语言:javascript
复制
android {
..

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

        }
    }
}

在greendaolib buld.gradle中

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44195286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档