GWT - добавление внешних классов Java в клиентский проект - PullRequest
4 голосов
/ 26 февраля 2010

У меня есть проект GWT. Код клиента находится в директории "client". Я хочу присоединить внешние классы Java (в основном простые классы POJO DTO), которые находятся во внешнем каталоге. Как настроить файл gwt.xml?

Я получаю ошибки такого рода:

[ОШИБКА] Ошибки в 'файле: / C: /development/projects/CodeSpaces/LocateMe/LocateMeWeb/src/com/dominolog/locateme/client/LocateMeWeb.java' [ОШИБКА] Строка 56: исходный код недоступен для типа com.dominolog.locateme.model.dto.LocationInfo; Вы забыли унаследовать необходимый модуль?

Ответы [ 4 ]

5 голосов
/ 26 февраля 2010

Если у вас есть исходные файлы java, вам просто нужно добавить каталог в ваш файл .gwt.xml.Например, если у вас есть подкаталог с именем shared, вы бы добавили следующую строку:

<source path='shared'/>

Папка с именем shared должна быть на один уровень ниже вашего основного пакета.Так что если вы проектируете .gwt.xml файл находится в com.yourdomain.project, то общая папка .package будет com.yourdomain.project.shared.Обратитесь к разделу Путь к источнику по адресу http://code.google.com/webtoolkit/doc/latest/DevGuideOrganizingProjects.html#DevGuideModules

Если у вас нет источника и есть только классы, вы должны импортировать модуль, как сказал Хилбранд.

3 голосов
/ 11 октября 2012

Вот еще одно решение, которое работает http://www.gordonizer.com/2012/01/referencing-third-party-library-source.html.

Я коротко (на всякий случай, эта ссылка тоже когда-нибудь станет недействительной):

  • Предположим, что внешний пакет, содержащий классы, которые вы хотите добавить, является com.foo.bar.bat.
  • В вашем проекте вы создаете пакет com.foo.bar (без подпакета bat).
  • В вашем новом пакете вы создаете новый файл модуля GWT Foo.gwt.xml с содержимым, подобным

    <module> <source path="bat" /> </module>

    (я упустил заголовок XML для удобства чтения)

  • Наконец добавьте этот новый модуль в ваш основной модуль GWT, используя тег inherit:

    <inherits name="com.foo.bar.Foo"/>

1 голос
/ 26 февраля 2010

Любые классы Java, которые будут использоваться GWT, должны иметь файл модуля и соответствовать структуре пакета, которая включает в себя подпакет. См. Этот ответ для более подробной информации: Добавление пакетов Java в GWT . В этом случае файл модуля (например, model.gwt.xml) может быть создан в каталоге com.dominolog.locateme.model, который содержит следующее содержимое:

<module>
  <source path="dto" />
</module>

Добавьте ссылку на этот файл модуля в ваш основной файл модуля, и GWT примет все классы в пакете com.dominolog.locateme.model.dto.

2 примечания:

  1. GWT рассмотрит все классы в каталоге (и подкаталогах)

  2. Классы в пакете должны присутствовать в исходных файлах и могут не содержать каких-либо ссылок на другие библиотеки, не разбираемые GWT (Это может быть ограничением, когда в аннотациях классов dto используются ссылки, относящиеся к конкретному использованию базы данных ).

Обновление: Переписан ответ, чтобы быть более конкретным.

0 голосов
/ 03 марта 2010

Я постараюсь быть более конкретным. Моя структура рабочего пространства: Рабочая область

  1. LocateMeModel
  2. LocateMeServer
  3. LocateMeMobile
  4. LocateMeWeb

LocateMeWeb - это приложение GWT со стандартным макетом проекта. В LocateMeModel у меня есть классы Java, которые определяют dto (объекты передачи данных), которые являются общими для LocateMeWeb, LocateMeMobile и LocateMeServer. Поэтому мне нужно, чтобы GWT брал файлы из этого каталога (LocateMeModel) и компилировал его как код клиента. Это вообще возможно? Из того, что я вижу, GWT допускает только то, что код ДОЛЖЕН БЫТЬ в каталоге клиента с проектом GWT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...