RMI ClassNotFoundException - PullRequest
       8

RMI ClassNotFoundException

0 голосов
/ 26 февраля 2010

У меня есть программа RMI, которая отлично работает на моем компьютере, но когда я запускаю ее на школьном компьютере, я получаю исключение ClassNotFoundException для моего класса, который расширяет Remote. Я посмотрел на несколько похожих вопросов, мои ошибки почти идентичны, но предлагаемые там решения не работают для меня. Я не могу передать аргументы в реестр RMI, потому что он уже запущен и доступен другим студентам. Я попытался установить system.property внутри моей программы, но это не помогло. Я также пытался использовать Rmic, но это тоже не сработало.

Вот мое сообщение об ошибке от Exception.getMessage ():

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

Это вопросы с тем же типом проблемы.

класс rmi не может найти исключение

работает сервер rmi, класс не найден

Ответы [ 2 ]

0 голосов
/ 27 февраля 2010

Проблема заключалась в использовании rmiregistry, которое было запущено другим пользователем. Это означало, что путь к классу, используемый rmiregistry, был основан на среде другого пользователя. Чтобы это исправить, я запустил свой собственный rmiregistry на другом порту.

0 голосов
/ 27 февраля 2010

java.lang.ClassNotFoundException: chordNode

Похоже, что класс "chordNote" отсутствует в пути к классам. Это твое? Если это так, вы должны знать, что использование пакета по умолчанию - плохая идея, и имя вашего класса не соответствует обычным соглашениям об именах Java. Оба являются плохими признаками для меня.

Трудно точно сказать, что не так, поскольку вы не публикуете код.

Но так как вы студент, я бы посоветовал вам начать все сначала с вашего подхода к этой проблеме. Когда люди говорят что-то вроде «На этой машине все работает, но не на этой», это говорит мне, что они зависят от того, что некоторые условия выполняются, и они могут не понимать:

Я не могу передать аргументы в реестр RMI потому что он уже запущен и поделился с другими учениками.

Так это общий компьютер, на котором вы пытаетесь развернуть службу RMI? Я бы поговорил с владельцем сервера и RMI-репозитория, чтобы узнать, как можно развернуть там свой код.

Или вы можете запустить свой собственный экземпляр, который прослушивает другой порт, кроме стандартного.

Я попытался установить system.property внутри моей программы, но это не помощь.

Извините, какое системное свойство вы имеете в виду?

Я также пытался использовать Rmic, но это тоже не работал.

Зачем вам нужно запускать rmic, если вы переносите код с одного компьютера на другой?

Как выглядит "не работает"? Возможно, путь не установлен правильно.

Извините, ваш вопрос слишком неопределенный, чтобы на него ответить.

...