2009-11-27 3 views
6

У меня есть модуль утилиты для GWT, который не имеет в UI (следовательно, не существует класса, который наследует от com.google.gwt.core.client.EntryPoint Когда я пытаюсь скомпилировать этот модуль с GWT 1.7.1, я получаю эту ошибку:Как скомпилировать модуль без EntryPoint? .

[ERROR] Module has no entry points defined 

Как избавиться от этой ошибки? действительно ли я должен определить фиктивную точку входа? Как Google когда-либо компилировать свои служебные модули ???

+0

, но вам нужно хотя бы одно приложение: это покрыто? – jldupont

+0

Да. У меня есть точка входа в другой модуль. Я просто тупик, как я могу скомпилировать модуль без EP. –

ответ

0

Я использую плагин gwt-maven-plugin Maven2 для компиляции моего кода. Я перенес код из старой версии плагина maven-googlewebtoolkit2-plugin. Для старого плагина, я должен указать, какие модули были точки входа, как так:

   <compileTargets> 
        <param>com.project.module.Module</param> 
       </compileTargets> 

Для нового плагина, это

   <module>com.project.module.Module</module> 

Поскольку плагин не может найти какие модули для компиляции, то найдите «* .gwt.xml» и скомпилировали их все в «UI-модули» (которые должны иметь точку входа).

3

нет, не нужно EntryPoint. Вот пример одного из моих модулей, который не имеет одного:

<?xml version="1.0" encoding="UTF-8"?> 
<module> 
    <source path="grid" /> 
    <inherits name="com.google.gwt.user.User"/> 
</module> 

Короткий ответ: вы не компилируете код в модули. GWT просто нуждается в них в качестве исходного кода. Когда вы компилируете свой основной модуль (тот, у которого есть точка входа), он использует источник из любых других модулей, которые вы унаследовали в вашем файле .gwt.xml, чтобы скомпилировать весь проект.

+0

+1 Это не решило мою проблему, но указало мне в правильном направлении. –

5

Утилизационные банки не должны собираться GWT.

Если вы просто хотите повторно использовать это как библиотеку в других приложениях GWT, вам просто нужно jar файлы .class и .java в одной банке и убедитесь, что у вас есть .gwt.xml, где говорится, что клиент источник. Если вы будете следовать конвенциям (классам клиента в клиенте), то вы можете уйти только в противном случае вам нужно указать тег для клиентского пакета

Затем убедитесь, что вы унаследовали эту .gwt.xml в проекты, в которых вы хотите скомпилировать точку входа.

+0

+1 для точного объяснения. –

+1

Досадно, что если вы случайно используете код, который недоступен в клиенте GWT, он не будет вызывать ошибки, пока вы не попытаетесь скомпилировать его в полное приложение. Таким образом, вы можете создавать служебные банки, как вы их называете, которые на самом деле не действительны для использования GWT. Есть ли способ обойти это? – Shannon

0

У нас есть модуль служебных программ, который содержит &, обрабатывает некоторые общие элементы пользовательского интерфейса и кучу общих задач javascript/json.

Похоже, что мы сделали (также мигрировали из плагина totsp в плагин codehaus где-то вдоль линии), чтобы включить точку входа в модуль util; это было просто пусто. (Он включает комментарий «Преднамеренный нет-op»).

Тогда жом просто ссылается на вещь как на зависимость.

0

Если вы используете плагин GWT для eclipse, просто удалите модуль без EntryPoint из списка модулей, который появляется непосредственно перед компиляцией.