我使用 Sugar ORM 创建的 SQL 表出现 IllegalAccessException。我正在做的是获取联系人并将其发送到服务器进行某些操作,然后返回一个我使用 JSON 解析并显示的值。该操作是通过使用服务来完成的。当我搜索表以获取值时,会引发异常。
private void nonstoprun()
{
handler = new Handler();
update = new Runnable()
{
@Override
public void run()
{
ArrayList<mobstat> musers1 = (ArrayList<mobstat>) mobstat.listAll(mobstat.class); //getting exception here
setData(musers1);
handler.postDelayed(this, 1000);
}
private void setData(ArrayList<mobstat> musers1)
{
musers.clear();
musers.addAll(musers1);
descAdapter.notifyDataSetChanged();
}
};
handler.postDelayed(update, 10);
}
线路异常
ArrayList<mobstat> musers1 = (ArrayList<mobstat>) mobstat.listAll(mobstat.class);
例外:
java.lang.IllegalAccessException: java.lang.Class<com.xxx.xxxx> is not accessible from java.lang.Class<com.orm.SugarRecord>
我正在 Android 模拟器 (Nougat) 中运行代码
mobstat 类:
import com.orm.SugarRecord;
import com.orm.dsl.Unique;
class mobstat extends SugarRecord {
@Unique
String name;
String status;
long stime;
public mobstat(){ }
mobstat(String name, String status, long stime) {
this.name = name;
this.status = status;
this.stime = stime;
}
@Override
public String toString() {
return status;
}
String getname(){
return name;
}
String getstatus(){
return status;
}
}
我知道这个问题似乎很老了,但我们又来了......
错误明确指出
java.lang.IllegalAccessException
,这意味着您需要设置您正在获取/设置的properties或您的init()
,即SugarRecord
上的构造函数public
的访问级别。 这样就可以访问了:)
目前看起来它是私人的,即您的
setters & getters
是private
。 (将它们留空表示它们是私有的)
如果您不确定要获取或设置哪些值,最好为类的所有 getter 和 setter 分配访问级别 public
class mobstat extends SugarRecord {
@Unique
String name;
String status;
long stime;
public mobstat(){ }
public mobstat(String name, String status, long stime) {
this.name = name;
this.status = status;
this.stime = stime;
}
.....
public String getname(){
return name;
}
}
和+1,
如果您在后台执行<class>.listAll
的事情,即使用AsyncTask,,那就更好了