使用ORMLite的Android项目无法在ant中构建

时间:2012-10-27 15:36:29

标签: android ant ormlite

我有一个带有ORMLite库的Android项目,我想在F-Droid上发布。该项目在Eclipse中编译没有问题。但是,F-Droid使用ant来构建项目,而在他们这一方面,项目无法在下面的(汇总)代码中构建错误:

private Dao<Habit, Integer> habitDao;
private Dao<Day, Integer> dayDao;

public Dao<Habit, Integer> getHabitDao() throws SQLException {
    if (habitDao == null) {
        habitDao = getDao(Habit.class);
    }
    return habitDao;
}

public Dao<Day, Integer> getDayDao() throws SQLException {
    if (dayDao == null) {
        dayDao = getDao(Day.class);
    }
    return dayDao;
}

错误在habitDao = getDao(Habit.class)和dayDao = getDao(Day.class)行上,并出现以下错误消息:

type parameters of D cannot be determined; no unique maximal instance exists for type variable D with upper bounds com.j256.ormlite.dao.Dao,com.j256.ormlite.dao.Dao

这与此处描述的问题相同:https://groups.google.com/forum/?fromgroups=#!topic/ormlite-android/rUVI0d-khKk,并且可能是Java编译器中的错误。

现在,我不是专家开发人员,所以添加显式强制转换的方法对我来说并不直观。以下是我改变代码的方式:

public Dao<Habit, Integer> getHabitDao() throws SQLException {
    if (habitDao == null) {
        habitDao = getDao(Habit.class);
    }
    return (Dao<Habit, Integer>)habitDao;
}

public Dao<Day, Integer> getDayDao() throws SQLException {
    if (dayDao == null) {
        dayDao = getDao(Day.class);
    }
    return (Dao<Day, Integer>)dayDao;
}

这解决了我的问题,蚂蚁在我的头上成功构建了项目,而且应用程序顺利运行。但是,F-Droid的ant构建过程仍然失败,并出现与上述相同的错误。现在我迷路了,因为我不能再“调试”这个,就我的蚂蚁而言,项目没有任何问题,因此我所做的任何改变都是纯粹的猜测。

之后我再尝试了一件事:

@SuppressWarnings("unchecked")
public Dao<Habit, Integer> getHabitDao() throws SQLException {
    if (habitDao == null) {
        habitDao = (Dao<Habit, Integer>)getDao(Habit.class);
    }
    return (Dao<Habit, Integer>)habitDao;
}

@SuppressWarnings("unchecked")
public Dao<Day, Integer> getDayDao() throws SQLException {
    if (dayDao == null) {
        dayDao = (Dao<Day, Integer>)getDao(Day.class);
    }
    return (Dao<Day, Integer>)dayDao;
}

但这是纯粹的猜测,在F-Droid方面,构建过程仍然失败并出现同样的错误。

非常感谢任何有关如何解决这个问题的建议。

编辑:该应用程序是开源的,所以任何愿意尝试使用ant自己构建它的人都欢迎:https://github.com/blaztriglav/did-i

0 个答案:

没有答案