I have an Android Project, using Android Studio 2.3, which uses GreenDAO to generate the classes to interact with the SQLite database. The DaoGenerator project always worked before... but today I just needed to add 2 columns/properties to an Entity and whenever I try to run the generator project, I get the following error:
Exception in thread "main" java.lang.NoClassDefFoundError: org/greenrobot/greendao/generator/Schema at com.company.daogenerator.ProjectDaoGenerator.main(ProjectDaoGenerator.java:20) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147) 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)
I'm using GreenDAO 3.2.0 in my application's Gradle file:
compile 'org.greenrobot:greendao:3.2.0'
Also, in DaoGenerator's Gradle file:
apply plugin: 'java' dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'org.greenrobot:greendao-generator:3.2.0' }
My ProjectDaoGenerator.java file:
package com.company.daogenerator; import org.greenrobot.greendao.generator.DaoGenerator; import org.greenrobot.greendao.generator.Entity; import org.greenrobot.greendao.generator.Property; import org.greenrobot.greendao.generator.Schema; public class ProjectDaoGenerator { private static Entity primaryKeyEntity; private static Entity itemTypeEntity; public static void main(String args[]) throws Exception { Schema schema = new Schema(1, "com.company.project.datamodel"); schema.enableKeepSectionsByDefault(); // Define entities Entity primaryKey = schema.addEntity("CDPrimaryKey"); Entity installation = schema.addEntity("CDInstallation"); // Z_PRIMARYKEY primaryKeyEntity = primaryKey; primaryKey.setTableName("Z_PRIMARYKEY"); primaryKey.addLongProperty("ENT").columnName("Z_ENT").primaryKey(); primaryKey.addIntProperty("MAX").columnName("Z_MAX"); primaryKey.addStringProperty("NAME").columnName("Z_NAME"); primaryKey.addIntProperty("SUPER").columnName("Z_INT"); // CDInstallation installation.setTableName("ZCDINSTALLATION"); installation.addLongProperty("packageDate").columnName("ZPACKAGEDATE"); (...) // Other Properties // **** Generate Schema **** new DaoGenerator().generateAll(schema, "app/src/main/java"); } }
It's as if it couldn't find org.greenrobot.greendao.generator.Schema
.