【发布时间】:2015-12-10 06:07:31
【问题描述】:
我是 robojuice 的新手,但我需要处理一段已经由其他人构建的代码。如果我向已经具有@Inject 的类的构造函数添加一个额外的参数,我将面临问题。我的 android 应用程序崩溃并给出以下错误,但没有关于该问题的详细描述:
"java.lang.RuntimeException: Unable to start activity ComponentInfo{com.my.app.envTest/com.my.app.navigation.NavigActivity}: com.google.inject.ConfigurationException: Guice configuration errors:"
我确定此错误与活动无关,而是与我添加到构造函数的新参数有关。如果我删除该参数,它工作正常。
以前:
@Inject
public PlotRepo(RuntimeExceptionDao<Plot, String> plotDao, RuntimeExceptionDao<LocalPlotData, Long> localPlotDataDao) {
this.plotDao = plotDao;
this.localPlotDataDao = localPlotDataDao;
}
面临的问题:
@Inject
public PlotRepo(RuntimeExceptionDao<Plot, String> plotDao, RuntimeExceptionDao<LocalPlotData, Long> localPlotDataDao, RuntimeExceptionDao<LocalSelPlotData, Long> localSelPlotDataDao) {
this.plotDao = plotDao;
this.localPlotDataDao = localPlotDataDao;
this.localSelPlotDataDao = localSelPlotDataDao;
}
调试后出现此错误:
1) Could not find a suitable constructor in com.j256.ormlite.dao.RuntimeExceptionDao. Classes must have either one (and only one) constructor annotated with @Inject or a zero-argument constructor that is not private.
at com.j256.ormlite.dao.RuntimeExceptionDao.class(Unknown Source)
while locating com.j256.ormlite.dao.RuntimeExceptionDao<com.myapp.s.b.sets.domain.LocalSelPlotData, java.lang.Long>
for parameter 2 at com.tp.my.sets.PlotRepo.<init>(Unknown Source)
while locating com.myapp.s.b.sets.PlotRepo
for parameter 1 at com.myapp.s.b.GroupingManager.<init>(Unknown Source)
while locating com.myapp.s.b.GroupingManager
for field at com.myapp.s.b.navigation.NavigActivity.groupingManager(Unknown Source)
while locating com.myapp.s.b.navigation.NavigActivity
不确定我哪里出错了,也找不到太多帮助。 谁能帮我解决这个问题。
谢谢
【问题讨论】:
-
请查看代码示例(
Previously和Facing issue for)。签名是 100% 相同的 AFAICT -
@Grogi。谢谢!我现在更正了
-
"Could not find a suitable constructor in com.j256.ormlite.dao.RuntimeExceptionDao" 那么该类有哪些构造函数呢?
-
@TavianBarnes:我错过了一些数据库类的默认构造函数。对于 ORMlite,这些是强制性的。
标签: java android guice inject roboguice