Вопрос

На данный момент я разрабатываю приложение для Android, и я сталкиваюсь с проблемой, которую я понятия не имею, как решить.

Мое приложение связывается с сервером Tomcat, и я использую ObjectOutputStream отправить А. Document объект к моей заявке с моего сервлета.

Поэтому я импортирую org.w3c.dom в моем проекте. Проблема, которую я сталкиваюсь, это то, что я не могу прочитать Document объект с ObjectInputStream на моем устройстве Android.

Я получаю следующее исключение.

com.sun.org.apache.xerces.internal.dom: ClassNotFoundException 

На линии:

ObjectInputStream ois = new ObjectInputStream(conn.getInputStream());
Document doc = (Document) ois.readObject();     
ois.close();

Я могу отправить и получать любой объект, который я хочу без проблем, но когда я пытаюсь отправить объект, указанный на пакет COM.W3C.DOM, я получаю это исключение.

Может кто-нибудь помочь?

Это было полезно?

Решение

Внедрение Sun JVM внедрение ORG.W3C.Document использует класс, расположенный в упаковке, который включен только в Sun JVM (в качестве имени пакета пакета пакета «com.sun.something».)

Когда Android Dalvik VM пытается определить объект в readObject, Он находит ссылку на то, что внутреннее, Sun JVM конкретно, класс - потому что далвик В.М. не имеет ссылки на этот класс (Dalvik's org.w3c.Document Реализация отличается), исключение брошено. (В более общем целом, сериализация / дезерриализация Java должна работать только в том случае, если как сериализатор, так и дезерриализатор разделяют одинаковую реализацию класса. Я подозреваю, что большинство ваших процедур десериализации потерпят неудачу, если ваш экземпляр Tomcat не работает на Sun JVM.

Увидев, что вы отправляете объекты org.w3c.document, и что этот класс изначально представляет документ XML, вы можете решить проблему, отправив XML-поток, а не по течению объекта.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top