【问题标题】:Build error with Realm使用 Realm 构建错误
【发布时间】:2016-05-22 11:00:30
【问题描述】:

使用 Realm 构建代码时出现以下错误

:app:compileDebugJavaWithJavac 注意:处理类 DataBaseQuestion 错误:没有参数的默认公共构造函数 如果声明了自定义构造函数,则必须声明。注意:创建 DefaultRealmModule 警告:“io.realm.DefaultRealmModule”类型的文件 上一轮创建的将不受注解 加工。警告:类型文件 上一轮创建的 'io.realm.DefaultRealmModuleMediator' 将 不受注解处理。 2 个警告错误:执行 任务 ':app:compileDebugJavaWithJavac' 失败。

编译失败;有关详细信息,请参阅编译器错误输出。

注意:我的模型或 Java Bean 类中已经存在默认构造函数。

谁能帮我解决这个问题?

DataBaseQuestion.java

public class DataBaseQuestion extends RealmObject{

int id;
String Question =null;
String QuestionNo =null;
List<String> optionList=null;
String typeOfQuestion=null;
String Answer = null;
String Explanation = null;

DataBaseQuestion()
{


}
public DataBaseQuestion(int id, String question, String questionNo, List<String> optionList, String typeOfQuestion, String answer, String explanation) {
    this.id = id;
    Question = question;
    QuestionNo = questionNo;
    this.optionList = optionList;
    this.typeOfQuestion = typeOfQuestion;
    Answer = answer;
    Explanation = explanation;
}




public String getQuestion() {
    return Question;
}

public void setQuestion(String question) {
    Question = question;
}

public String getQuestionNo() {
    return QuestionNo;
}

public void setQuestionNo(String questionNo) {
    QuestionNo = questionNo;
}

public List<String> getOptions() {
    return optionList;
}

public void setOptions(List<String> optionList) {
    this.optionList = optionList;
}

public String getTypeOfQuestion() {
    return typeOfQuestion;
}

public void setTypeOfQuestion(String typeOfQuestion) {
    this.typeOfQuestion = typeOfQuestion;
}

public String getAnswer() {
    return Answer;
}

public void setAnswer(String answer) {
    Answer = answer;
}

public String getExplanation() {
    return Explanation;
}

public void setExplanation(String explanation) {
    Explanation = explanation;
}

@Override
public String toString() {
    return "DataBaseQuestion{" +
            "Question='" + Question + '\'' +
            ", QuestionNo='" + QuestionNo + '\'' +
            ", options=" + optionList +
            ", typeOfQuestion='" + typeOfQuestion + '\'' +
            ", Answer='" + Answer + '\'' +
            ", Explanation='" + Explanation + '\'' +
            '}';
}

【问题讨论】:

    标签: java android realm


    【解决方案1】:

    错误:必须声明一个没有参数的默认公共构造函数

    您可以将所需的default constructor 添加到指定的类并回来查看。

    改变

    DataBaseQuestion() {
    }
    

    public DataBaseQuestion() {
    }
    

    【讨论】:

    • 能否请您分享问题中的类DataBaseQuestion
    • 我添加了DataBaseQuestion
    • 哎呀,是的,我忘了添加。但是知道我又遇到了一个错误 Error:(27, 8) error: Type java.util.List of field optionList is not supported
    • @Sahil : 那应该在另一个线程中跟进,请不要添加到同一个线程中
    • 谢谢老板,您节省了我的时间 :) 我为我使用 public Tax(){} Tax is my realm 数据库模型
    【解决方案2】:

    你忘记了公共修饰符。

    您的程序可能会尝试在包上下文之外访问它,这意味着它只查找公共构造函数。它找到一个 - 需要构造函数参数的那个,但没有看到包私有的那个。添加“public”访问修饰符应该可以解决问题。

    public DataBaseQuestion(){}
    

    注意:你应该在业余时间看看 lombok,这样你就不会手动处理 getter、setter、AllArgsContsructors 或 NoArgsConstructors 的创建

    【讨论】:

    • 哎呀,是的,我忘了添加。但是知道我又遇到了一个错误 Error:(27, 8) error: Type java.util.List of field optionList is not supported
    • github.com/realm/realm-java/issues/1279 你应该使用 RealmList 而不是 List。而且由于 String 不扩展 RealmObject 你可以创建一个 RealmObject 它只有一个 String 字段 class StringObject extends RealmObject { @PrimaryKey private String string; //...getter & setter }
    • 如果之后您无法开始,您应该为此创建单独的问题 :) 干杯
    【解决方案3】:

    此错误的另一个可能原因是定义了一个继承自 RealmObject 的包私有对象。

    它失败的原因与上述答案相同:默认构造函数是包私有的,因此注释处理器无法访问。声明类 public 修复它。

    改变

    class DataBaseQuestion extends RealmObject { }

    public class DataBaseQuestion extends RealmObject { }

    【讨论】:

      【解决方案4】:

      另一个原因可能是在不同的包中错误地声明了两次类。

      如果你定义你的类:

      public class DataBaseQuestion extends RealmObject {
          ....
      }
      

      然后将你的代码复制到一个单独的目录中

      或者将它作为static 类嵌套在另一个类中,则可能会引发完全相同的错误。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-12-17
        • 2016-11-28
        • 1970-01-01
        • 2012-09-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多