Уважаемые знатоки переполнения стека!
Я пытаюсь создать очень простое клиент-серверное приложение Java с использованием Java EE 7, и намерение состоит в том, чтобы отправить сообщение через веб-сокет с использованием реализации JSR 356.
Я запрограммировал и успешно развернул сервер, следуя различным блогам, которые я там нашел, и мне удалось связаться с клиентом Javascript с моим сервером Java.
Теперь я пытаюсь создать отдельное Java-приложение, которое должно взаимодействовать с сервером и получать ту же информацию. Я читал, что реализацию JSR 356 можно использовать в клиентах Java, и именно это я и сделал. Я также использовал Tyrus для создания клиента и поддержания его работы с помощью механизма защелки и т. д. и т. д. Красиво. Клиент, наконец, запрограммирован, сервер запущен и работает, НО когда я пытаюсь запустить клиент, я получаю эту ошибку:
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.glassfish.appclient.client.acc.AppClientContainer.launch(AppClientContainer.java:446)
at org.glassfish.appclient.client.AppClientFacade.main(AppClientFacade.java:166)
Caused by: java.lang.NoClassDefFoundError: javax/websocket/CloseReason$CloseCode
at Main.Main.main(Main.java:27)
... 6 more
Caused by: java.lang.ClassNotFoundException: javax.websocket.CloseReason$CloseCode
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at org.glassfish.appclient.client.acc.ACCClassLoader.findClass(ACCClassLoader.java:237)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
... 7 more
Java Result: 1
Я использую Java EE 7 API + Tyrus в NetBeans 7.3 и развертываю в Glassfish 4 (который, насколько я читал, поддерживает реализацию JSR 356). Теперь, с какой стати не находит класс CloseReason! :( В таком случае он не должен был скомпилироваться, не так ли?
Странно то, что я не жалуюсь на другие классы, связанные с реализацией веб-сокета (JSR 356), и, с другой стороны, я развернул сервер (веб-приложение), и механизм веб-сокета работает нормально. (Я думаю, что я не реализовал там CloseReason... но почему он жалуется только на это! :@)
Любая оказанная помощь будет высоко оценена!!
Ваше здоровье,
Еще один выродок Stack Overflow ищет помощи. :)