Подготовка и запуск Java RMI - PullRequest
0 голосов
/ 06 октября 2011

Я пытаюсь запустить пример кода из этого урока Sun:

http://download.oracle.com/javase/6/docs/technotes/guides/rmi/hello/hello-world.html

Я скопировал весь их код именно в проект Eclipse и запустил «rmiregistry &» из терминала (я использую OSX).

Когда я пытаюсь запустить сервер, я получаю

Server exception: java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: 
    java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: 
    java.lang.ClassNotFoundException: suntut.Hello

Я заверил #java на freenode, что самому реестру не нужно ничего знать о моих классах. Но кажется еще более странным, что проблема связана с моими именами файлов или чем-то еще - все три класса прекрасно видят друг друга во время компиляции, все они находятся в одном пакете в проекте Eclipse и т. Д. Может кто-нибудь помочь мне начать диагностировать это?

Обновление: Я попытался запустить его из командной строки. От / Пользователи / [я] / рабочая область / [имя проекта] / тестирование / я запустил

java suntut/Server

и получил точно такую ​​же ошибку. (Это после успешной компиляции всего с помощью javac)

1 Ответ

1 голос
/ 06 октября 2011

Если вы впервые используете RMI, я бы порекомендовал следовать инструкциям для загрузки, ничего не меняя (т. Е. Даже имя пакета). Это позволяет другим помочь вам, и вероятность того, что вы совершите ошибку, невелика.

В настоящее время покончите с Eclipse и попробуйте следовать инструкциям в руководстве. Используя IDE, вы в конечном итоге смешаете IDE и реальные проблемы. Тем не менее, вы должны использовать полное имя класса при запуске Java-класса. Если тестирование является частью имени пакета, вы должны использовать testing.suntut.Server вместо suntut.Server.

...