2012-03-06 9 views
1

私はEclipseで作業しているシリアライズ可能なクラス(CardGame)を持っていて、元々はパッケージ(x.cardlib)に入れていました。私はEclipseのリファクタリングユーティリティを使用してパッケージをy.cards.modelsに名前を変更しました(今はパッケージの名前を正しく指定する方法を知っています)。直列化オブジェクトをリファクタリングした後のClassNotFoundException Eclipse

シリアライズされたCardGamesをデータベースからダウンロードして変換する新しいクラス(CardGameDatabase)を作成し、後でそのための新しい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のクリーンアップユーティリティを実行しました。以前のコンパイル済みコードに古いリファレンスが存在していた可能性があると考えました。私はまだエラーを受けています。

(実際には、書き込み中フム、私はそれを考え出した私は答えを投稿しますまもなく場合には他の誰がこのような問題があった。。)

+1

**回答**:コードをリファクタリングする前に、私のデータベース*にCardGameを保存していました。データベースからオブジェクトをダウンロードすると、データベース内のオブジェクトはまだx.cardlib.CardGameと呼ばれていました。要するに、パッケージの名前を変更すると私のシリアル化が壊れ、ClassNotFoundExceptionが発生しました。 –

+0

これをあなたの質問に対する実際の回答として追加し、同意してください。それ以外の場合は、この質問に答えられていないように見えます。 –

+0

私の評判が十分に高いわけではないので、明らかに私はもう7時間はできません。 (投稿前にこの制限について知らなかった) –

答えて

1

回答:を私はにCardGameを保存していました私のコードをリファクタリングする前に私のデータベース。データベースからオブジェクトをダウンロードすると、データベース内のオブジェクトはまだx.cardlib.CardGameと呼ばれていました。要するに、パッケージの名前を変更するとシリアル化が破られ、ClassNotFoundExceptionが発生します。

関連する問題