Как предотвратить перезапись аргументов командной строки конфигурации запуска для моего проекта GWT?

У меня есть многомодульный проект GWT, который я пытаюсь отладить с помощью SuperDevMode (или, может быть, новое имя — GWT Dev Mode с Jetty) в Eclipse.

Я использую:

  • Марс .2 (Версия 4.5.2)
  • GWT 2.7 SDK (хотя 2.8.1 тоже установлена)
  • Плагин GWT Eclipse 3.0.0
  • Интеграция Maven для Eclipse JDT 1.3.0
  • gwt-maven-плагин версии 1.0-rc-8

В прошлом иногда при запуске GWT Dev Mode запускался сбой со следующим сообщением:

Runing CodeServer with parameters: [-noprecompile, -port, 9876, -sourceLevel,
1.7, -bindAddress, 127.0.0.1, -launcherDir,
/Users/SomeUser/Documents/customers/SomeCustomer/dev/workspace/FolderName/target/NAME-0.0.1-SNAPSHOT,
-logLevel, INFO, ca.example.Name, .module]
Invalid module name: '.module'
Google Web Toolkit 2.7.0

(Да, там написано «работает», а не «работает», я только что это заметил). Обратите внимание, что я изменил некоторые пути и имена классов, но эти изменения не должны быть значительными.

Я решил эту проблему, отредактировав Run Configuration. Оказывается, в конец был добавлен дополнительный аргумент командной строки «.module». Когда я удаляю этот аргумент, я могу отлаживать.

Но этот аргумент продолжает возвращаться. В последнее время он возвращается каждый раз, когда я пытаюсь отладить приложение, используя Run As -> GWT Dev Mode с Jetty.

Я пытался использовать цель maven gwt: devmode, и до сих пор она работает нормально.

Я также попытался сохранить локальную копию конфигурации запуска. Сохраненная конфигурация выглядит нормально, но когда я пытаюсь ее запустить, «.module» добавляется до начала сеанса отладки, и я получаю ту же ошибку.

Думаю, я мог бы просто начать использовать gwt:devmode для запуска сеансов отладки, но среда отладки немного отличается, поэтому я хотел бы иметь возможность продолжать использовать режим разработки GWT с Jetty.

Кто-нибудь сталкивался с этой фантомной вставкой «.module» и выяснил, как заставить Eclipse прекратить это делать?


person Jeff Kramer    schedule 19.02.2018    source источник
comment
Это может произойти, если дескриптор модуля переименован. Сначала запустите проект, затем переименуйте дескриптор модуля и снова запустите. В этом случае вы видите ссылку на старый дескриптор модуля и новую ссылку. Обычно после удаления старой ссылки все должно работать.   -  person El Hoss    schedule 20.02.2018
comment
Насколько я знаю, я не меняю дескриптор модуля. Мой рабочий процесс: попробуйте отладить, получите ошибку, удалите «.module» из параметров конфигурации запуска, отладьте успешно. Затем в следующий раз, когда я попытаюсь отладить (без каких-либо изменений, о которых я знаю), я снова получаю ошибку (и снова...).   -  person Jeff Kramer    schedule 20.02.2018


Ответы (2)


Быстрое исправление: из eclipse вы можете сохранить конфигурацию запуска в виде файла xml и зафиксировать ее в своем репозитории, чтобы все разработчики могли иметь под рукой правильную конфигурацию.

Похоже, что есть какая-то папка или файл, которые обманывают Eclipse, заставляя думать, что это модуль .gwt.xml, и добавляют его в список доступных модулей.

person Luigi Polvani    schedule 21.02.2018
comment
Я попытался сохранить конфигурацию. Полученный файл выглядит правильно, но когда я открываю его в eclipse и пытаюсь запустить, я получаю ту же ошибку, и редактор конфигурации показывает, что eclipse уже добавил «.module». Похоже, что где-то между открытием файла конфигурации и его запуском или отображением Eclipse (или плагин GWT или что-то еще) обрабатывает содержимое конфигурации и добавляет «.module.». Я согласен с вашей гипотезой относительно того, как это пахнет. Я хотел бы думать, что это связано с какой-то ошибкой, которую я настроил в своем проекте, а не с плагинами. - person Jeff Kramer; 23.02.2018
comment
Нам нужно больше информации, чтобы действительно помочь. Я не знаю, какой частью вашего проекта вы можете поделиться, но содержимое файла запуска eclipse (должен быть какой-то xml) и/или структура файлов/папок проекта поможет вам получить лучшую обратную связь, - person Luigi Polvani; 23.02.2018
comment
Я не думаю, что смогу поделиться большей частью проекта. Тем не менее, я проверяю сумасшедшую гипотезу, которая может дать некоторое представление и предоставить обновленную информацию о том, как это работает. - person Jeff Kramer; 28.02.2018
comment
У меня есть проект, который иногда иллюстрирует проблему. Это проект, который мы используем в качестве нашего шаблона при запуске нового проекта GWT или усовершенствовании существующего проекта GWT. Поскольку он лишь иногда иллюстрирует проблему, я не решаюсь его публиковать, так как просмотр его может быть пустой тратой времени. Тем не менее, я придумал тупой ответ, который, кажется, в основном устраняет проблему. Не знаю почему, но пока этого достаточно. Спасибо за помощь. - person Jeff Kramer; 13.03.2018

Это тупой ответ, который в большинстве случаев избавляет нас от проблемы. Я подозреваю, что правильный ответ заключается в том, что структура нашего проекта немного шаткая. Когда мы узнаем больше о GWT и стандартном способе настройки проектов maven, мы, вероятно, найдем правильный ответ или реструктурируем наши проекты, чтобы у нас больше не было этой проблемы.

Тем не менее, проблема, похоже, исчезнет, ​​когда мы повторно добавим файл определения модуля.

Под этим я подразумеваю...

Основываясь на каком-то случайном поиске в Google, когда мы конвертируем проект GWT в maven, мы перемещаем файл определения модуля из

packagename/modulename.gwt.xml

to

src/main/module.gwt.xml.

Это, по-видимому, вызывает вышеуказанные проблемы.

Чтобы решить проблему, я скопировал

src/main/module.gwt.xml

вернуться к

packagename/modulename.gwt.xml

и проблема исчезает, за исключением, иногда, самого первого раза, когда мы пытаемся запустить проект в «режиме разработки GWT с Jetty». И да, я знаю, что теперь у нас есть две копии файла, и это кажется просто неправильным.

Я не знаю, почему это происходит, и думал, что определение модуля должно быть в src/main/module.gwt.xml. Но это работает, так что я могу жить с этим на данный момент.

person Jeff Kramer    schedule 13.03.2018