Попытка создать строку json из объекта области с помощью Gson, в соответствии с этим SerializeToJson.java . И раньше он работал нормально с realm 4.0, но не с realm 5.8.0. Получение java.lang.ClassNotFoundException: io.realm.LevelRealmProxy
Что-то не хватает? В любом случае, вот мой код:
public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
setUpRealm();
checkProxy();
}
private void setUpRealm() {
Realm.init(this);
}
private void checkProxy() {
Realm realm = null;
try {
Gson gson = new GsonBuilder()
.setExclusionStrategies(new ExclusionStrategy() {
@Override
public boolean shouldSkipField(FieldAttributes f) {
return f.getDeclaringClass().equals(RealmObject.class);
}
@Override
public boolean shouldSkipClass(Class<?> clazz) {
return false;
}
})
.registerTypeAdapter(Class.forName("io.realm.LevelRealmProxy"), new LevelSerializer())
.create();
// Serialize a Realm object to a JSON string
realm = Realm.getDefaultInstance();
Log.d("MyLogs", gson.toJson(realm.where(Level.class).findFirst()));
} catch (ClassNotFoundException e) {
Log.e("MyLogs", e.toString());
e.printStackTrace();
} finally {
if (realm != null) realm.close();
}
}
RealmObject
public class Level extends RealmObject {
String id;
int order;
}
TopLevel Gradle
dependencies {
classpath 'com.android.tools.build:gradle:3.3.0'
classpath "io.realm:realm-gradle-plugin:5.8.0"
}
Уровень приложения Gradle
apply plugin: 'com.android.application'
apply plugin: 'realm-android'
android {
compileSdkVersion 28
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
dependencies {
implementation 'com.google.code.gson:gson:2.8.5'
}
Я нашел обходной путь, используя copyFromRealm()
для RealmObject вместо использования registerTypeAdapter
для Gson