Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 1
Регистрация: 30.06.2016
Сообщений: 99

Java RMI Ошибка

31.05.2018, 13:19. Показов 1411. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток! Пытаюсь реализовать RMI, но не получается. Есть клиент, интерфейс на JavaFX, два поля для ввода чисел
и кнопка для отправки этих чисел на сервер, который должен вернуть их сумму. В клиенте реализован интерфейс. На сервере Интерфейс и Класс имплемент. Всё запускается но по нажатию кнопки в клиенте выплёвывается ошибка.
1.Интерфейс
Java
1
2
3
4
5
6
7
8
9
10
11
 package MyClientPack;
 
import java.rmi.Remote;
import java.rmi.RemoteException;
 
public interface MyCalculatorInterface extends Remote {
 
    int add(int a,int b) throws RemoteException;
 
 
}
2. Action Кнопки
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Controller {
 
   public Button myButton1;
   public TextField myTextField1;
   public TextField myTextField2;
   public Label myLabel1;
 
   public void pressMyButton1(ActionEvent e) throws RemoteException,NotBoundException {
      Registry MyRegistry = LocateRegistry.getRegistry();
      MyCalculatorInterface MyCalculator = (MyCalculatorInterface) MyRegistry.lookup(MyRegistry.list()[0]);
      this.myLabel1.setText(Integer.toString(Integer.parseInt(this.myTextField1.getText()),Integer.parseInt(this.myTextField2.getText())));
 
   }
 
 
 
}
3. Интерфейс на сервере
Java
1
2
3
4
5
6
7
8
9
10
package MyServerPack;
 
import java.rmi.Remote;
import java.rmi.RemoteException;
 
public interface MyCalculatorInterface extends Remote {
 
    int add(int a,int b) throws RemoteException;
 
}
4.Класс на сервере
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package MyServerPack;
 
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
 
public class MyClassCalculator extends UnicastRemoteObject implements MyCalculatorInterface {
 
    public MyClassCalculator() throws RemoteException{
    }
 
    public int add(int a,int b){
        return a+b;
    }
 
}
5. Запуск сервера
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package MyServerPack;
 
import javafx.event.ActionEvent;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
 
 
import java.rmi.AlreadyBoundException;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
 
 
public class Controller{
 
    public Button myButton1;
    public Button myButton2;
    public Label   myLabel1;
    public Label myLabel2;
    private Registry MyRegistry;
 
    public void pressMyButton1(ActionEvent e) throws RemoteException,AlreadyBoundException {
        this.MyRegistry = LocateRegistry.createRegistry(Registry.REGISTRY_PORT);
        MyRegistry.bind("MyCalculator",new MyClassCalculator());
        this.myLabel1.setText("Сервер запущен!");
        this.myLabel2.setText("Ожидание клиента!");
    }
 
    public void pressMyButton2(ActionEvent e) throws RemoteException {
            MyClassCalculator.unexportObject(MyRegistry, true);
            this.myLabel1.setText("Сервер остановлен!");
            this.myLabel2.setText("");
 
        }
    }
6. Собственно ошибка
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
    at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1774)
    at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1657)
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
    at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
    at javafx.event.Event.fireEvent(Event.java:198)
    at javafx.scene.Node.fireEvent(Node.java:8413)
    at javafx.scene.control.Button.fire(Button.java:185)
    at com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:182)
    at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:96)
    at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:89)
    at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218)
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
    at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
    at javafx.event.Event.fireEvent(Event.java:198)
    at javafx.scene.Scene$MouseHandler.process(Scene.java:3757)
    at javafx.scene.Scene$MouseHandler.access$1500(Scene.java:3485)
    at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1762)
    at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2494)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:394)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:295)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$353(GlassViewEventHandler.java:432)
    at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:389)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:431)
    at com.sun.glass.ui.View.handleMouseEvent(View.java:555)
    at com.sun.glass.ui.View.notifyMouse(View.java:937)
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at com.sun.glass.ui.win.WinApplication.lambda$null$147(WinApplication.java:177)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71)
    at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275)
    at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1769)
    ... 48 more
Caused by: java.rmi.UnmarshalException: error unmarshalling return; nested exception is: 
    java.lang.ClassNotFoundException: MyServerPack.MyCalculatorInterface (no security manager: RMI class loader disabled)
    at sun.rmi.registry.RegistryImpl_Stub.lookup(RegistryImpl_Stub.java:127)
    at MyClientPack.Controller.pressMyButton1(Controller.java:26)
    ... 58 more
Caused by: java.lang.ClassNotFoundException: MyServerPack.MyCalculatorInterface (no security manager: RMI class loader disabled)
    at sun.rmi.server.LoaderHandler.loadProxyClass(LoaderHandler.java:556)
    at java.rmi.server.RMIClassLoader$2.loadProxyClass(RMIClassLoader.java:646)
    at java.rmi.server.RMIClassLoader.loadProxyClass(RMIClassLoader.java:311)
    at sun.rmi.server.MarshalInputStream.resolveProxyClass(MarshalInputStream.java:265)
    at java.io.ObjectInputStream.readProxyDesc(ObjectInputStream.java:1798)
    at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1746)
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2040)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1571)
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:431)
    at sun.rmi.registry.RegistryImpl_Stub.lookup(RegistryImpl_Stub.java:123)
    ... 59 more
 
Process finished with exit code 0
Добавлено через 12 часов 43 минуты
Проблема решена! Необходимо было чтобы упаковки клиента и сервера имели одинаковое название!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.05.2018, 13:19
Ответы с готовыми решениями:

Ошибка в RMI: nested exception is: java.lang.ClassNotFoundException: rmi.RemoteDateImpl_Stub
Пытаюсь создать простое RMI приложение , а точнее беру пример из книги сервер выглядить так когда его запускаю из JBuilder то...

Java RMI
Клиент удаленно вызывает метод сервера, который может быть запущен на удаленном компьютере. На клиенте водится строка. Сервер возвращает...

JAVA RMI калькулятор
Вот код того, что нормально функционирует, для общей картины, может комуто будет полезным. public class Fraction_RMI_Definitions { ...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
31.05.2018, 13:19
Помогаю со студенческими работами здесь

Запуск java rmi системы
Всем привет) Только разбираюсь с rmi и решила запустить простой пример с выводом "Hello World". Но у меня не получается. Опишу...

Как исправить ошибку java.rmi.ServerException
Использую в своем проекте проект который использует RMI, с RMI не сильно знаком , вылетает такой експешион java.rmi.ServerException:...

Ошибка Looking for messag center service Error - java.lang.ClassCastException: sun.rmi.registry.RegistryImpl_Stub cannot be cast to
Помогите, пожалуйста, я новичок в Java, и пробовала изменить но не получается. За ранее спс! import java.awt.TrayIcon.MessageType; ...

RMI технологии. Java
Задание: 1. Создать серверную часть, на которой создать функцию "Получить дату удаленного компьютера" ,вызываемую удаленно. 2....

Java rmi: не могу возвратить объект
Здравствуйте. При реализации удаленного интерфейса rmi столкнулся с проблемой: мои удаленные методы возвращают без проблем примитивные...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru