IKVMC, MONO: ClassCastException при десериализации

1

Мы используем Xamarin + IKVM для компиляции нашего java-кода для платформы iOS. Я получаю ClassCastException при десериализации данных, сериализованных ранее в файл:

.lang.ClassCastException
  at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1943)
  at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1850)
  at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java)
  at java.io.ObjectInputStream.readObject0(ObjectInputStream.java)
  at java.io.ObjectInputStream.readObject(ObjectInputStream.java:361)
  at com.kiwi.animaltown.UserAssetRenderer.deSerialize(UserAssetRenderer.java:2072)

Вот класс, который я пытаюсь сериализовать:

  public class TestSerializeClass  implements Serializable
    {
        /**
         * 
         */
        private static final long serialVersionUID = -1218312212872650919L;
        public int leftNonTransparentX = -1;
        public TestSerializeClass()
        {
        }
    }

Для сериализации:

obOut = new ObjectOutputStream(bufferOutStream);
                for(int x = 10; x < 20; x = x+1) {
                    TestSerializeClass obj = new TestSerializeClass();
                    obOut.writeObject(obj);
                }

Для десериализации:

        inStr = AssetConfig.assetStorage.getFileHandle(fileName).read();
        BufferedInputStream buffStr = new BufferedInputStream(inStr, 8*1024);
        ObjectInputStream in = new ObjectInputStream(buffStr);

        try {
             Object obj;
             while (true) {
                obj = (TestSerializeClass)in.readObject();
             }
          catch...
  • 0
    Что входит in in.readObject() из кода десериализации?
  • 0
    Отредактировал код. Теперь должно быть понятно
Теги:
xamarin
serialization
ikvm

1 ответ

0

Я понимаю, что опаздываю на вечеринку, и, честно говоря, я почти не касался IKVM почти десять лет назад, но в то время я помню, что при загрузке сериализации возникали проблемы с загрузкой.

Вместо того, чтобы копаться, то, что мы сделали, чтобы обойти эту проблему, полагалось на стороннюю библиотеку сериализации. Мы оказались довольны XStream. В настоящее время я бы предложил использовать портативное решение для сериализации (например, что-то, что работает поверх JSON или MessagePack). Таким образом, у вас больше степеней свободы, если что-то не сработает - вы можете просто заменить подсистему сериализации на конкретную платформу.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню