首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NoClassDefFoundError在尝试运行DaoGenerator for GreenDAO时

NoClassDefFoundError在尝试运行DaoGenerator for GreenDAO时
EN

Stack Overflow用户
提问于 2017-03-16 19:17:55
回答 3查看 2.5K关注 0票数 6

我有一个使用AndroidStudio2.3的Android,它使用GreenDAO生成与SQLite数据库交互的类。DaoGenerator项目在.但是今天我只需要向一个实体添加2个列/属性,每当我试图运行生成器项目时,我就会得到以下错误:

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

我在应用程序的Gradle文件中使用GreenDAO 3.2.0:

代码语言:javascript
复制
compile 'org.greenrobot:greendao:3.2.0'

另外,在DaoGenerator的Gradle文件中:

代码语言:javascript
复制
apply plugin: 'java'

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

我的ProjectDaoGenerator.java文件:

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

就好像找不到org.greenrobot.greendao.generator.Schema一样。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-11-09 11:04:04

将生成器的build.gradle文件设置如下(特别注意mainClassName):

然后单击Android右侧栏中的"Gradle“选项卡,然后选择daogenerator的"run”任务,如下所示:

它为我工作,更多细节检查链接:https://github.com/greenrobot/greenDAO/issues/619 generation

票数 14
EN

Stack Overflow用户

发布于 2018-01-11 09:43:44

除了@Jesto Paul提到的内容之外,我还在生成器类中更改了以下内容

新的DaoGenerator().generateAll(模式,"./app/src/main/java");-显示路径不存在。

新的DaoGenerator().generateAll(模式,“./app/src/main/java”);

(在路径中添加了双点)。完成此操作后,生成器将创建文件夹中的表。

票数 2
EN

Stack Overflow用户

发布于 2017-04-13 12:34:37

出于某种原因,我在更新安卓buildToolsVersion之后遇到了同样的问题。

在搜索了一段时间之后,我意外地检查了"Run > Edit Configurations.“DaoGenerator的

在JRE列表中选择了"Android 25平台“。因此,我将其改为运行在我的计算机上的外部Java (例如,"1.8",几天前就这样做了)。帮我解决了这个问题。

编辑:在这个项目中,我使用GreenDAO 2.1.0

编辑2:

https://github.com/greenrobot/greenDAO/issues/619 - generation

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

https://stackoverflow.com/questions/42843031

复制
相关文章

相似问题

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