シリアライズを使用してサーバーからクライアントにShape
の配列を送信するクライアントとサーバーがあります。私はすべてのコードを書いており、クライアントプログラムとサーバープログラムの間で共有パッケージを作成する限り、エラーはありません。しかし、私は2つの別々のプロジェクトを作成し、それぞれの場合、私はShape.java
と同じ内容のプロジェクトを作成しますが、今度はクライアントをサーバーに接続すると、ClassNotFoundException
となります。 私はShape.java
を共有パッケージに入れても、それをコピーしてサーバーのプログラムに貼り付けるとすぐにClassNotFoundException
というメッセージが表示されるのはなぜですか?私は自分のコードを友達に送信したいので、本当に必要です。このシリアライズされたオブジェクトを使って別のプロジェクトがあります。共有パッケージにクラス直列化の定義を入れないと、なぜClassNotFoundExceptionが生成されますか?
答えて
同じパッケージに[クラス]を作成する理由は何ですか?
Shape
がないクラスの名前、それの一部でしかありませんので。 Javaは、パッケージを含むフルネームでクラスを識別します。
サーバでcom.myserver.Shape
と定義し、クライアントでcom.myclient.Shape
と定義した場合、JVMは2つのクラスを無関係として正しく扱います。
一般的なアプローチは、データ交換オブジェクト用の特別なパッケージを作成することです。 com.shared.dto.Shape
を使用し、通信の両側で使用します。
あなたのプロジェクトを他の人と共有する必要がある場合は、DTOと別のjarファイルを作成し、クライアントライブラリと別のjarファイルを作成します。クライアントライブラリとDTO jarを使用してクライアントコードをビルドします。これにより、クライアントが同じDTO jarに対して構築されたサーバーと通信できるようになります。
ノートのためにありがとう、彼は私のようなものに彼のパッケージの名前を作る場合、エラーが修正されるか? –
@ehsanはい、両側で同じパッケージ名を使用すると、エラーは修正されます。しかし、同じファイルを使用して片面を修正することによって発生する問題を回避することは、より良いことです。クラスのシリアル化バージョンIDも指定することをお勧めします。 – dasblinkenlight
ありがとう、私は 'private static final long serialVersionUID = 20L;'を追加して、私の投票は私がupvote多くのようにロックされている; –
- 1. なぜ結果が共有されないのですか?
- 2. WCFサービスの共有DLLタイプが生成されない
- 3. なぜ静的共有設定が保存されないのですか?
- 4. protobuf-net:なぜ生成されたクラスにセッターがないのですか?
- 5. オブジェクトを永続化しようとすると、@Id列が生成されないのはなぜですか?
- 6. Angular2共有コンポーネントが共有されていない共有コンポーネント
- 7. NameErrorを取得する共通モジュールを一つのクラスが別のクラスにアクセスされる初期化されていない定数を、両方の共有
- 8. なぜscalaはローカルスコープのクラスとローカルに定義されたクラスを異なって扱いますか?
- 9. なぜauth2が定義されていないのですか?
- 10. 派生クラスで定義されていない抽象クラス
- 11. なぜ画像がFacebookの共有に表示されないのですか?
- 12. 入れ子になったクラスでインポートされたパッケージを使用できないのはなぜですか?
- 13. 配列が定義されていないのはなぜですか?
- 14. 最後に基本クラスのプロパティが直列化されているのはなぜですか?
- 15. コンポーネントを作成するときにangular-cliが共有フォルダを生成しないのはなぜですか?
- 16. System.Drawing.Imageクラスが抽象クラスとして定義され、型として返されるメソッドも定義されているのはなぜですか?
- 17. レイアウトXMLに<shape>を定義すると、なぜClassNotFoundExceptionが発生しますか?
- 18. なぜassertは(void)0と定義されていますか?
- 19. PHP:array_udiffで生成された配列を有効なjsonに変換できないのはなぜですか?
- 20. なぜサーバーサイドコントロールのIDが生成されないのですか?
- 21. この共有サービスデータが表示されないのはなぜですか?
- 22. facebookで共有ボタンが表示されないのはなぜですか?ページの共有iframe対応の
- 23. スカフォールドが生成されないのはなぜですか?
- 24. MSI割り込みが共有されないのはなぜですか?
- 25. クラス定義のない逆シリアル化されたオブジェクトインスタンス
- 26. パッケージ化されていないgradleのコンパイル依存関係を定義する
- 27. webpackは、ソースマップが生成されていないと、なぜそれを生成したのですか?
- 28. なぜJavaで抽象クラスを直列化しないのですか?
- 29. 複数の定義エラーが発生することなく、.hファイルにクラスと関数を入れないのはなぜですか?
- 30. Django Restフレームワークのシリアライゼーションが多く生成されないNoneType直列化された関係のインスタンス
おそらく同じパッケージ内に作成していないからです。 –
ええ、それは私がなぜShapeの定義をターゲットプロジェクトに入れても、同じパッケージで作成しなければならないのですか? –
'foo.bar.baz.Shape'と同じパッケージです。 –