Перезапуск GWT DevMode Jetty не учитывает изменения кода сервера
Я только что скачал GWT 2.5.1 SDK. Я побежал:
./webAppCreator -out / home / myUser / tmp / dummygwt / com.dummygwt.OhHai
И это создало проект GWT для меня. Затем я перешел к /home/myUser/tmp/dummygwt/
и побежал:
ant -buildfile build.xml devmode
И запустил инструмент GWT Development Mode, и я нажал Launch Default Browser
который принес мое приложение "OhHai" в Firefox.
Затем я перешел к /home/myUser/tmp/dummygwt/src/com/dummygwt/server/GreetingServiceImpl.java
и открыл его для редактирования. Я изменил возвращаемое значение на GreetingServiceImpl#greetServer
метод, чтобы начать с " Bonjourno " вместо " Hello ". Таким образом, когда вы вводите свое имя и нажимаете кнопку "Отправить", всплывающее диалоговое окно будет звучать как "Bonjourno, ...". (Я просто играю и получаю удовольствие от этого.)
Я сохранил свои изменения в GreetingServiceImpl.java
а затем (внутри инструмента GWT Dev Mode), перейдите на вкладку Jetty и нажмите Restart Server
и получил следующие предупреждения:
00:14:25.446 [WARN] Не удалось найти класс сервера 'com.google.gwt.dev.shell.jetty.JDBCUnloader' в веб-приложении, но он был найден в системном пути к классам
00:14:25.446 [WARN] Добавление записи пути к классу 'file:/home/myUser/sandbox/dsi/workbench/gwt-sdk/gwt-2.5.1/gwt-dev.jar' в путь к классам веб-приложения для этого сеанса Подробнее информация: файл:/home/myUser/sandbox/dsi/workbench/gwt-sdk/gwt-2.5.1/doc/helpInfo/webAppClassPath.html
Я обновил свой браузер, ввел новое имя и нажал "Отправить". Я все еще вижу "Привет, ..." вместо "Бонжурно, ...". Я делаю что-то не так, или это ошибка инструмента GWT Dev Mode? Заранее спасибо!
Примечание. Если я выйду из инструмента Dev Mode (и закрою вкладку в моем браузере), а затем перезапущу Dev Mode, изменения на стороне сервера вступят в силу. Но в документации GWT четко сказано, что для "горячего развертывания" серверного кода все, что вам нужно сделать, это перезапустить сервер из инструмента... не выходить из него и не перезапускать инструмент вообще...
3 ответа
Я уверен, что вам просто нужно перекомпилировать GreetingServiceImpl.java после того, как вы внесли свои изменения (вы не упоминаете, что делали это после внесения изменений). Перезапуск сервера не будет перекомпилировать все магически для вас (но обычно ваша IDE будет).
Обратите внимание, что hot-deploy - это не то же самое, что "hot-compile-deploy".
Когда вы запускаете GWT DevMode, он будет отслеживать только изменения в клиентских Java-классах.
Измените любой класс в любом пространстве имен клиента (src/com/dummygwt/client или src/com/dummygwt/shared), перезагрузите страницу в браузере, и вы увидите изменения.
Тем не менее, когда вы изменяете классы на стороне сервера, вы должны скомпилировать их перед перезагрузкой сервера Jetty.
Измените класс на стороне сервера (т.е. GreetingServiceImpl.java), используя любой текстовый редактор, затем запустите ant javac
в другом терминале, и GreetingServiceImpl.class будет обновлен, наконец, нажмите кнопку "Перезагрузить сервер", и вы увидите изменения.
Этот процесс намного проще, если вы редактируете свой класс в Eclipse, потому что по умолчанию Eclipse настроен на непрерывную компиляцию файлов.java в.class, поэтому достаточно перезагрузить сервер.
Имя - кеш простых звонков, и для применения settigs его необходимо перезагрузить. Есть много способов перезагрузить, вы просто должны забрать одну ведьму проще для вас. закрыть / открыть это одно, вы также можете очистить с вашего веб-браузера, не выходя.