Простое приложение RMI - PullRequest
       6

Простое приложение RMI

0 голосов
/ 27 сентября 2011

Я создал простое приложение RMI, которое просто отправляет сообщение на сервер RMI. Но при отправке сообщения я получил сообщение об ошибке. Я использую eclipse для запуска программ.

sending hello to 10.0.0.12:3233

java.rmi.UnmarshalException: error unmarshalling return; nested exception is: 
    java.lang.ClassNotFoundException: com.zoondia.ReceiveMessageInterface (no security manager: RMI class loader disabled)
    at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
    at test.rmi.RmiClient.main(RmiClient.java:28)
Caused by: java.lang.ClassNotFoundException: com.zoondia.ReceiveMessageInterface (no security manager: RMI class loader disabled)
    at sun.rmi.server.LoaderHandler.loadProxyClass(Unknown Source)
    at java.rmi.server.RMIClassLoader$2.loadProxyClass(Unknown Source)
    at java.rmi.server.RMIClassLoader.loadProxyClass(Unknown Source)
    at sun.rmi.server.MarshalInputStream.resolveProxyClass(Unknown Source)
    at java.io.ObjectInputStream.readProxyDesc(Unknown Source)
    at java.io.ObjectInputStream.readClassDesc(Unknown Source)
    at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
    at java.io.ObjectInputStream.readObject0(Unknown Source)
    at java.io.ObjectInputStream.readObject(Unknown Source)

Кто-нибудь знает, в чем проблема. Я использую eclipse для запуска программы. Мне нужен rmi compailor в eclipse, или он автоматически компилируется при запуске программы.

Спасибо, VKS.

Ответы [ 3 ]

1 голос
/ 24 февраля 2012

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

убедитесь, что вы изменили каталог на вашу папку src

При второй ошибке убедитесь, что вы создали файлы политики как для сервера, так и для клиента.

1 голос
/ 27 сентября 2011

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

Вам нужно сделать что-то вроде следующего в коде вашего сервера:

if (System.getSecurityManager() == null) 
{
    System.setSecurityManager(new java.rmi.RMISecurityManager());
}

Проверьте javadocs для RMISecurityManager для получения дополнительной информации.

0 голосов
/ 28 сентября 2011

Исключение указывает на то, что указанный класс отсутствует в пути к классам клиента.

Это может быть связано с одной из двух причин:

  1. Вы не используете функцию кодовой базы и не включили класс в файлы JAR клиента.

  2. Вы используете функцию кодовой базы и не установили менеджер безопасности.

...