Я сохранил объект ArrayList<MyClass>
как объект с ObjectOutputStream
. Теперь, как я могу прочитать этот объект в другом проекте приложения с ObjectInputStream
? Я попытался, и он выбрасывает ClassNotFoundException
. Я скопировал MyClass
из проекта 1 в проект 2. Нужно ли мне что-то делать?Чтение Java ObjectInputStream из разных приложений
ответ
Вы не должны копировать класс и ожидать, что он будет выглядеть одинаково - компилятор Java/JVM замечает изменения. Используйте точно такой же файл класса !!!
Есть несколько версий, чтобы сделать так:
- Deliver Project1 с Project2 и настроить ваш CLASSPATH
- Скопируйте файл класса в тот же пакет к Project2
- прикрепить Jar к Project2 содержащий
MyClass
И что вы никогда не должны забывать: Каждые Serializable
должен иметь serialVersionUID
Eclipse автоматически делает предупреждение - щелкните по нему и сгенерируйте его. Если у вас нет Eclipse, используйте serialver
из JDK.
Но не забывайте: если ваш класс изменился так, что старые версии не будут интерпретироваться новыми версиями, измените значение serialversionUID
.
* Каждый Serializable должен иметь serialVersionUID *: no. Это просто неправда. Добавление serialVersionUID, если вы не знаете, что это такое, как его использовать, и как внести изменения в свой класс и сохранить его обратно совместимым с сериализованными версиями, просто добавляет шум в ваш код. –
@JBNizet Это неправда. У меня был тот же JAR-файл с 'Object [Input | Output] Stream' в нем, работающим в Linux и Windows, а файлы, созданные на одной ОС, не выполнялись на другом, с исключением, что эти' serialVersionUID' didn ' t соответствует – msrd0
Тогда у вас, вероятно, было 2 версии одного и того же класса, но скомпилированы двумя разными компиляторами. См. Http://docs.oracle.com/javase/7/docs/platform/serialization/spec/class.html#4100 –
- 1. Java: Чтение из ObjectInputStream
- 2. StreamCorruptedException, используя ObjectInputStream Чтение из TextFile (Java)
- 3. чтение документов из разных приложений на iOS
- 4. JAVA ObjectInputStream, чтение объектов несуществующих классов
- 5. Чтение в сериализованных объектах из ObjectInputStream
- 6. java ee lookup ejbs из разных приложений
- 7. Java - чтение файлов из разных модулей maven
- 8. Чтение объекта из файла с помощью ObjectInputStream? ClassNotFoundException
- 9. ImportError из разных приложений
- 10. Java Socket - ObjectInputStream
- 11. java socket ObjectInputStream
- 12. Java - разрешить ObjectInputStream
- 13. Java ObjectInputStream java.io.EOFException
- 14. Java FileStream - ObjectOutputStream ObjectInputStream
- 15. EOFException из конструктора ObjectInputStream
- 16. Ошибки при чтении из ObjectInputStream Java
- 17. Чтение объекта через ObjectInputStream исключает исключение EOF
- 18. ObjectInputStream/ObjectOutputStream: Чтение ошибок/Написание добавочных объектов
- 19. Java ObjectInputStream не создается экземпляр
- 20. Чтение объектов из файла Java
- 21. Чтение Facebook-приложений из JavaScript?
- 22. Чтение и запись в базу данных SQLite из двух разных приложений Java
- 23. C# Чтение/запись файла из нескольких приложений
- 24. ObjectInputStream из socket.getInputStream()
- 25. Java cast ObjectInputStream result to ArrayList
- 26. Делегат из разных приложений Django
- 27. Push-уведомления из разных приложений:/
- 28. IOException в ObjectInputStream в java
- 29. Получение объектов через ObjectInputStream (Java)
- 30. ObjectInputStream
Почему вы читаете «FileInputStream» вместо «ObjectInputStream»? Вы проверяли, что оба класса имеют один и тот же 'serialVersionUID'? И если это не поможет, не могли бы вы пройти мимо всего исключения и последнего кода? – msrd0
Что вы подразумеваете под «копированием». Вы не должны копировать его. Вы должны использовать тот же самый класс. –
мой плохой я использую ObjectInputStream в другом проекте тоже .. я отредактирую вопрос –