親愛なるスタックオーバーフローユーザー。
RMIレジストリの問題をたくさん読んで、問題を解決しようとしましたが、成功しませんでした。だからここに私のケースがあり、誰かが少なくとも少し私を助けてくれることを願っています。
私は学校のプロジェクトのためにマルチプレイヤーのパックマンを作っています。java RMIを使用する必要があるため、3つの素敵なjarファイルを作成しました。モノをリモートサーバーに公開し、マップなどのようなものをロードするメインクラスを含む(のみ)サーバー。いくつかの素敵なフォームを表示するスイングジャンクを含むクライアント。そして3番目にすべてのpacmanコードを含むライブラリ。
サーバーをローカルで起動すると、rmiregistryが起動し、ゲームがサーバーにバインドされます(もちろんセットアップ後)。次に、クライアントをそれに接続して、うまくプレイできます。すべてが機能し、ローカルのrmiregisteryに接続しているView Clientを起動して、ゲームオブジェクトを適切に取得できます。その後、サーバーから独立してレジストリを起動し、プログラムを完全に実行しました。私のラップトップ(127.0.0.1ではない)のIPを介しても、正常に機能しました。レジストリのクラスパスを設定しなかったことに注意してください。
その後、サーバーに移動しました(2008)。クラスパスなしでそこでrmiregistryを開始し、server.jarをそれに接続しようとしましたが、失敗しました。(..spelクラスの例外が見つかりませんでした)クラスパスを修正しました....効果がありません....新しいコンソールを開いて新しいレジストリを開始し、pacman.jarをc:\にコピーして、サーバーを実行しました.jar with -Djava.rmi.server.codebase = c:\ paramether ....効果がない...次にセキュリティマネージャーを設定します...(System.setSecurityManager(new RMISecurityManager());
)そして以下を含むポリシーを作成しgrant {permission java.security.AllPermission;};
、サーバーを使用してサーバーを実行しました.jar -Djava.rmi.server.codebase = c:-Djava.security.policy =server.policy...これも効果はありません。
私は同じ例外を受け取り続けます:
java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: Tervoort.Bram.Packman.Spel
at sun.rmi.server.UnicastServerRef.oldDispatch(Unknown Source)
at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)
at sun.rmi.transport.Transport$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
問題が何であるかについて誰かが何か手がかりを持っていますか?そしてそれを修正する方法は?