Realm.getInstance(context)throws可能尚未执行Annotation处理器

时间:2015-03-02 21:42:04

标签: android eclipse exception annotations realm

当尝试获取Realm实例时,我得到以下异常 -

io.realm.exceptions.RealmException: Could not find the generated io.realm.HallOfFameHolderRealmProxy class: Annotation processor may not have been executed.

我的班级代码是 -

@RealmClass

公共类HallOfFameHolder扩展了RealmObject {

private static final String TAG = "HallOfFameHolder";

private int mId;
private String mTrackName;
private Date mDateTime;
private String mTimeStr;
private String mDateStr;
private long mTotalRunTime;
private String mTotalRunTimeStr;
private int mNumOfLaps;
private long mBestLapTime;
private String mBestLapTimeStr;
private boolean mDryTrack;
private float mGearRatio;
private int mSrJetting;

@Ignore
private int mSessionId;

public void setData(String trackName, Date dateTime, String timeStr,
        String dateStr, long totalRunTime, String totalRunTimeStr,
        int numOfLaps, long bestLapTime, String bestLapTimeStr,
        boolean dryTrack, float gearRatio, int srJetting) {
    Log.d(TAG, "setData");
    mTrackName = trackName;
    mDateTime = dateTime;
    mTimeStr = timeStr;
    mDateStr = dateStr;
    mTotalRunTime = totalRunTime;
    mTotalRunTimeStr = totalRunTimeStr;
    mNumOfLaps = numOfLaps;
    mBestLapTime = bestLapTime;
    mBestLapTimeStr = bestLapTimeStr;
    mDryTrack = dryTrack;
    mGearRatio = gearRatio;
    mSrJetting = srJetting;
}

public void setData(int id, String trackName, Date dateTime,
        String timeStr, String dateStr, long totalRunTime,
        String totalRunTimeStr, int numOfLaps, long bestLapTime,
        String bestLapTimeStr, boolean dryTrack, float gearRatio,
        int srJetting) {
    Log.d(TAG, "setData");
    mTrackName = trackName;
    mDateTime = dateTime;
    mTimeStr = timeStr;
    mDateStr = dateStr;
    mTotalRunTime = totalRunTime;
    mTotalRunTimeStr = totalRunTimeStr;
    mNumOfLaps = numOfLaps;
    mBestLapTime = bestLapTime;
    mBestLapTimeStr = bestLapTimeStr;
    mDryTrack = dryTrack;
    mGearRatio = gearRatio;
    mSrJetting = srJetting;
    mId = id;
}   

public int getmId() {
    return mId;
}

public void setmId(int mId) {
    this.mId = mId;
}

public String getmTrackName() {
    return mTrackName;
}

public void setmTrackName(String mTrackName) {
    this.mTrackName = mTrackName;
}

public Date getmDateTime() {
    return mDateTime;
}

public void setmDateTime(Date mDateTime) {
    this.mDateTime = mDateTime;
}

public String getmTimeStr() {
    return mTimeStr;
}

public void setmTimeStr(String mTimeStr) {
    this.mTimeStr = mTimeStr;
}

public String getmDateStr() {
    return mDateStr;
}

public void setmDateStr(String mDateStr) {
    this.mDateStr = mDateStr;
}

public long getmTotalRunTime() {
    return mTotalRunTime;
}

public void setmTotalRunTime(long mTotalRunTime) {
    this.mTotalRunTime = mTotalRunTime;
}

public String getmTotalRunTimeStr() {
    return mTotalRunTimeStr;
}

public void setmTotalRunTimeStr(String mTotalRunTimeStr) {
    this.mTotalRunTimeStr = mTotalRunTimeStr;
}

public int getmNumOfLaps() {
    return mNumOfLaps;
}

public void setmNumOfLaps(int mNumOfLaps) {
    this.mNumOfLaps = mNumOfLaps;
}

public long getmBestLapTime() {
    return mBestLapTime;
}

public void setmBestLapTime(long mBestLapTime) {
    this.mBestLapTime = mBestLapTime;
}

public String getmBestLapTimeStr() {
    return mBestLapTimeStr;
}

public void setmBestLapTimeStr(String mBestLapTimeStr) {
    this.mBestLapTimeStr = mBestLapTimeStr;
}

public boolean ismDryTrack() {
    return mDryTrack;
}

public void setmDryTrack(boolean mDryTrack) {
    this.mDryTrack = mDryTrack;
}

public float getmGearRatio() {
    return mGearRatio;
}

public void setmGearRatio(float mGearRatio) {
    this.mGearRatio = mGearRatio;
}

public int getmSrJetting() {
    return mSrJetting;
}

public void setmSrJetting(int mSrJetting) {
    this.mSrJetting = mSrJetting;
}


// DO NOT Delete the next 2 methods
public int getmSessionId() {
    return mSessionId;
}

public void setmSessionId(int sessionId) {
    mSessionId = sessionId;
}   

}

我正在使用Eclipse和realm-0.78.0.jar。 如何解决?

2 个答案:

答案 0 :(得分:0)

我认为这与Proguard http://realm.io/docs/java/0.80.0/

有关
ProGuard
Realm generates a proxy class for each RealmObject at compile time. To ensure that these classes can be found after running an obufuscation and static analysis tool like ProGuard add the configuration below to your ProGuard configuration file.

-keepnames public class * extends io.realm.RealmObject
-keep class io.realm.** { *; }
-dontwarn javax.**
-dontwarn io.realm.**

进行这些更改是否解决了这个问题?

答案 1 :(得分:0)

您正在模型类中定义自定义方法(setData),Realm当前不支持该方法。我们正在努力实现这一目标,同时禁止开发人员自己开枪。