ком.гугл.ГВт.пользователь.клиент.протокол RPC.IncompatibleRemoteServiceException
У меня проблема с моим приложением GWT. Я разворачиваюсь на сервере Jetty, и он запускается. Но когда я выполняю вызов сервера (class on server package of GWT), сервер возвращает сообщение об ошибке. Сообщение таково:
7|0|6|http://localhost/zbapp/zb_app/|A31E1254E17F9AD731856D6BE34124A2|main.java.com.gwt.app.client.GreetingService|greetServer|java.lang.String/2004016611||1|2|3|4|2|5|5|6|6|
//EX[2,1,["com.google.gwt.user.client.rpc.IncompatibleRemoteServiceException/3936916533","This application is out of date, please click the refresh button on your browser. ( Expecting version 5 from client, got 7. )"],0,5]
Однако сервер возвращает код 200, который является ок.
Я обновил браузер, очистил кэш браузера и перекомпилировал приложение, но оно не запускается. Каково же решение этой проблемы??
Заранее спасибо!
С уважением!
3 ответов:
Ваш клиент является uptodate, так как он отправляет запрос, используя версию 7 протокола GWT-RPC, но сервер ожидает версию 5. Убедитесь, что вы развернули правильную версию GWT-сервлета.jar, и / или что у вас нет более старой версии в пути к классу сервера, которая использовалась бы вместо той, что была в вашем веб-приложении.
Более конкретно, у вас есть GWT-сервлет.jar от GWT между 1.5 и 2.0 (версия 5 Протокола GWT-RPC), в то время как ваш клиентский код был скомпилирован с GWT 2.1 или новее (версия 7 протокола).
Проблема решена (по крайней мере, моя версия этого)
Ошибка: Исключение, возникающее при обработке этого вызова: неизвестный метод - > исключение: com.гугл.ГВт.пользователь.клиент.протокол RPC.IncompatibleRemoteServiceException сообщение: Это приложение устарело, пожалуйста, нажмите кнопку Обновить в вашем браузере. (Ожидая версию 5 от клиента, получил 7. )
Решение: Посмотрите, какая зависимость тянет в модуле GWT-user (jar), потому что это-вероятная причина проблемы. Сначала проверьте удаление то GWT-user jar из вашей папки LIB устраняет проблему, а затем вы можете также изменить Maven, чтобы использовать исключение для "gwt-user" следующим образом:
<dependency> <groupId>com.google.gwt.google-apis</groupId> <artifactId>gwt-visualization</artifactId> <version>1.0.2</version> <exclusions> <exclusion> <groupId>com.google.gwt</groupId> <artifactId>gwt-user</artifactId> </exclusion> </exclusions> </dependency>
Я изменил библиотеки, и ошибка исчезла. Однако ошибка меняется. Теперь моя ошибка:
//EX[2,1,["com.google.gwt.user.client.rpc.IncompatibleRemoteServiceException/3936916533","Could not locate requested interface 'main.java.com.gwt.app.client.GreetingService' in default classloader"],0,7]Но интерфейс находится в classloader.
Затем необходимо переопределить метод 'service' из HttpServlet:
@Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // Cache the current thread Thread currentThread = Thread.currentThread(); // We are going to swap the class loader ClassLoader oldContextClassLoader = currentThread.getContextClassLoader(); currentThread.setContextClassLoader(this.getClass().getClassLoader()); super.service(req, resp); currentThread.setContextClassLoader(oldContextClassLoader); }Таким образом, приложение работает в день равноденствия!!
Comments