У меня есть сериализуемый класс (CardGame), с которым я работаю в Eclipse, и изначально его поместил в пакет (x.cardlib). Я переименовал пакет в y.cards.models, используя утилиту рефакторинга Eclipse (теперь, когда я знаю, как правильно назвать пакет).ClassNotFoundException после реорганизации сериализованного объекта Eclipse
Я написал новый класс (CardGameDatabase), который загружает и преобразует сериализованные CardGames из базы данных, и позже написал новый тестовый пример JUnit (CardGameDatabaseTest). Я попытался запустить мой тестовый случай, и получил следующее сообщение об ошибке:
java.lang.ClassNotFoundException: x.cardlib.CardGame
at y.cards.database.CardGameDatabase.getGame(CardGameDatabase.java:28)
at y.tests.CardGameDatabaseTest.test(CardGameDatabaseTest.java:13)
я понял, что я должен еще иметь ссылку на старый пакет в моем коде, так что я сделал проект в масштабах поиска любого ссылки на старый пакет (например, «import x.cardlib.CardGame»). Я не нашел.
Затем я удалил весь скомпилированный код и запустил утилиту очистки Eclipse, считая, что, возможно, старая ссылка существовала в ранее скомпилированном коде. Я все еще получаю ошибку.
(Хм, я понял это во время записи, на самом деле я выложу ответ в ближайшее время в случае, если кто-то еще была проблема, как это.).
** Ответ **: Я сохранил CardGame в своей базе данных * до того, как * я реорганизовал свой код. После загрузки объекта из базы данных он все еще назывался x.cardlib.CardGame в базе данных. Короче говоря, переименование пакета прервало мою сериализацию, что привело к исключению ClassNotFoundException. –
Пожалуйста, добавьте это как реальный ответ на свой вопрос и примите его. В противном случае окажется, что этот вопрос остается без ответа. –
Видимо, я не могу еще 7 часов с тех пор, как моя репутация недостаточно высока. (Не знаю об этом ограничении перед публикацией) –