2009-11-27 4 views
6

ich ein Dienstprogramm-Modul für GWT haben, die keine UI (daher hat, keine Klasse gibt, die sich von com.google.gwt.core.client.EntryPoint erbt ist Wenn ich versuche, dieses Modul mit GWT 1.7.1 zu kompilieren, bekomme ich diesen Fehler:Wie kompiliere ich ein Modul ohne einen EntryPoint? .

[ERROR] Module has no entry points defined 

Wie kann ich diesen Fehler beheben? muss ich wirklich einen Dummy Einstiegspunkt definieren müssen? Wie hat Google immer ihren eigenen Nutzen Module ??? kompilieren

+0

aber Sie brauchen mindestens eine pro Anwendung: Ist das abgedeckt? – jldupont

+0

Ja. Ich habe einen Einstiegspunkt in einem anderen Modul. Ich bin nur ratlos, wie ich ein Modul ohne EP zusammenstellen kann. –

Antwort

0

Ich benutze das gwt-maven-plugin Maven2 Plugin, um meinen Code zu kompilieren. Ich habe den Code von einer alten Version des maven-googlewebtoolkit2-plugin Plugins migriert. Für die alte Plugin, musste ich wie so, welche Module waren Einstiegspunkte festlegen:

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

Für das neue Plugin, ist es

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

Da das Plugin nicht, was es zu kompilieren finden kann, Module, suche nach "* .gwt.xml" und kompiliere sie alle in "UI-Module" (die einen Einstiegspunkt haben müssen).

3

No Sie Entrypoint nicht brauchen. Hier ein Beispiel für eines meiner Module, das keines hat:

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

Die kurze Antwort ist, dass Sie Code in Modulen nicht kompilieren. GWT benötigt sie nur als Quellcode. Wenn Sie Ihr Hauptmodul kompilieren (das mit dem Einstiegspunkt), verwendet es die Quelle von anderen Modulen, die Sie in Ihrer Datei .gwt.xml geerbt haben, um das gesamte Projekt zu kompilieren.

+0

+1 Das hat mein Problem nicht gelöst, aber zeigte mir in die richtige Richtung. –

5

Utility-Jars müssen nicht von GWT kompiliert werden.

Wenn Sie dies nur als Bibliothek in anderen GWT-Anwendungen wiederverwenden möchten, müssen Sie nur die .class- und .java-Dateien in einem jar jar und sicherstellen, dass Sie eine .gwt.xml haben, die den Speicherort des Clients angibt Quelle ist. Wenn Sie die Konventionen (Client-Klassen in Client) folgen, dann können Sie mit nur sonst wegkommen Sie

Dann stellen Sie sicher, ein Tag für das Client-Paket angeben müssen, dass Sie diese .gwt.xml erben in die Projekte, für die Sie einen Einstiegspunkt erstellen möchten.

+0

+1 für die genaue Erklärung. –

+1

Die lästige Sache ist, dass, wenn Sie versehentlich Code verwenden, der nicht im GWT-Client verfügbar ist, dann wird es keinen Fehler verursachen, bis Sie versuchen, es in die vollständige App zu kompilieren. Auf diese Weise können Sie so genannte "Utility Jars" erzeugen, die für GWT nicht wirklich gültig sind. Gibt es einen Weg dahin? – Shannon

0

Wir haben ein Dienstprogramm-Modul, das & Griffe einige gemeinsame UI-Elemente und eine Reihe von Javascript/Json allgemeine Aufgaben erstellt.

Es sieht so aus, als hätten wir (auch vom totsp-plugin zum Codehaus-Plugin irgendwo entlang der Linie migriert), einen Einstiegspunkt in das util-Modul aufzunehmen; Es war einfach leer. (Es enthält den Kommentar "Absichtliche No-Op").

Dann bezieht sich der Pom nur auf die Sache als Abhängigkeit.

0

Wenn Sie Eclipse GWT Plugin verwenden, entfernen Sie einfach das Modul ohne einen EntryPoint aus der Modulliste, die kurz vor dem Kompilieren erscheint.