W System.err: org.greenrobot.greendao.DaoException: Could not init DAOConfig W System.err: at org.greenrobot.greendao.internal.DaoConfig.<init>(DaoConfig.java:94) W System.err: at org.greenrobot.greendao.AbstractDaoMaster.registerDaoClass(AbstractDaoMaster.java:44) W System.err: at com.biumall.play.dao.db.DaoMaster.<init>(DaoMaster.java:48) W System.err: at com.biumall.play.dao.db.DaoMaster.<init>(DaoMaster.java:43) W System.err: at com.biumall.play.dao.DatabaseManager.init(DatabaseManager.java:21) W System.err: at com.biumall.play.PlayApp.onCreate(PlayApp.java:25)
异常,简单记录一下,方便自己查。
正文
简单使用
build.gradle
这个build.gradle是工程下的,
/Project/build.gradle
新增
//新增 classpath 'org.greenrobot:greendao-gradle-plugin:3.3.1'
我的工程完整代码
buildscript { repositories { google() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:8.7.0' classpath 'org.greenrobot:greendao-gradle-plugin:3.3.1' } } plugins { id 'com.android.application' version '8.7.0' apply false id 'com.android.library' version '8.7.0' apply false id 'org.jetbrains.kotlin.android' version '1.7.10' apply false }
仅供参考
build.gradle
这个是模块下的/Model/build.gradle
//新增 id 'org.greenrobot.greendao'
这部分的代码
plugins { id 'com.android.application' id 'kotlin-android' id 'org.greenrobot.greendao' }
显示引入依赖的jar
//新增 implementation 'org.greenrobot:greendao:3.3.0'
这部分完整代码
dependencies { implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar']) implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'com.google.android.material:material:1.10.0' //greendao implementation 'org.greenrobot:greendao:3.3.0' //exoplayer implementation 'androidx.media3:media3-exoplayer:1.10.0' }
自动生成文件的配置
greendao { schemaVersion 1 //数据库版本号 daoPackage 'com.biumall.play.dao.db' // 设置DaoMaster、DaoSession、Dao 包名 targetGenDir 'src/main/java' //设置DaoMaster、DaoSession、Dao目录 }
java代码
MusicBean.java
@Entity(nameInDb = "MusicBean") public class MusicBean { @Id(autoincrement = true) private Long id; /** * 歌曲名 */ private String title; /** * 歌曲名拼音 */ private String titleLetter; /** * 歌曲路径 */ private String path; /** * 歌手 */ private String artist; /** * 专辑 */ private String album; /** * 歌曲时长 */ private long duration; /** * 是否收藏 */ private boolean favorite; /** * 专辑图片 */ private long albumId; }
上面配置好后,就build一下工程,部分代码会自动生成
上面MusicBean文件也会新增部分内容,其他内容就在com.biumall.play.dao.db目录中(这部分略,自动生成的)。
@Entity(nameInDb = "MusicBean") public class MusicBean { @Id(autoincrement = true) private Long id; /** * 歌曲名 */ private String title; /** * 歌曲名拼音 */ private String titleLetter; /** * 歌曲路径 */ private String path; /** * 歌手 */ private String artist; /** * 专辑 */ private String album; /** * 歌曲时长 */ private long duration; /** * 是否收藏 */ private boolean favorite; /** * 专辑图片 */ private long albumId; @Generated(hash = 1617686685) public MusicBean(Long id, String title, String titleLetter, String path, String artist, String album, long duration, boolean favorite, long albumId) { this.id = id; this.title = title; this.titleLetter = titleLetter; this.path = path; this.artist = artist; this.album = album; this.duration = duration; this.favorite = favorite; this.albumId = albumId; } @Generated(hash = 1899243370) public MusicBean() { } public Long getId() { return this.id; } public void setId(Long id) { this.id = id; } public String getTitle() { return this.title; } public void setTitle(String title) { this.title = title; } public String getTitleLetter() { return this.titleLetter; } public void setTitleLetter(String titleLetter) { this.titleLetter = titleLetter; } public String getPath() { return this.path; } public void setPath(String path) { this.path = path; } public String getArtist() { return this.artist; } public void setArtist(String artist) { this.artist = artist; } public String getAlbum() { return this.album; } public void setAlbum(String album) { this.album = album; } public long getDuration() { return this.duration; } public void setDuration(long duration) { this.duration = duration; } public boolean getFavorite() { return this.favorite; } public void setFavorite(boolean favorite) { this.favorite = favorite; } public long getAlbumId() { return this.albumId; } public void setAlbumId(long albumId) { this.albumId = albumId; } }
DatabaseManager.java
public class DatabaseManager { private static final String DB_NAME = "music.db"; private static DaoSession mDaoSession; public static void init(Context context) { try { DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(context, DB_NAME); SQLiteDatabase db = helper.getWritableDatabase(); DaoMaster daoMaster = new DaoMaster(db); mDaoSession = daoMaster.newSession(); } catch (Exception e) { e.printStackTrace(); Log.d(PlayApp.TAG, "init e : " + e); } } public static MusicBeanDao getMusicBeanDao() { return mDaoSession.getMusicBeanDao(); } }
PlayApp.java
这里提前初始化。
DatabaseManager.init(this);
至此代码部分已经写完了,运行起来,发现出现异常。
W System.err: org.greenrobot.greendao.DaoException: Could not init DAOConfig W System.err: at org.greenrobot.greendao.internal.DaoConfig.<init>(DaoConfig.java:94) W System.err: at org.greenrobot.greendao.AbstractDaoMaster.registerDaoClass(AbstractDaoMaster.java:44) W System.err: at com.biumall.play.dao.db.DaoMaster.<init>(DaoMaster.java:48) W System.err: at com.biumall.play.dao.db.DaoMaster.<init>(DaoMaster.java:43) W System.err: at com.biumall.play.dao.DatabaseManager.init(DatabaseManager.java:21) W System.err: at com.biumall.play.PlayApp.onCreate(PlayApp.java:25)
