2012-10-02 12 views
5

Ich habe ein ENUM, das auf der Serverseite verwendet wird. Ich möchte diese Enum auf der Client-Seite (GWT) auch verwenden.Externe Java-Quelle im GWT-Projekt übernehmen

Das ist die Struktur:

se.mycompany.core 
se.mycompany.core.TheEnum <-- this Enum. 

se.mycomapny.web.gwtproject <-- The GWT project. 
se.mycomapny.web.gwtproject.client 

ich versucht habe

<inherits name="se.mycompany.core.TheEnum"/> 

meiner gwtproject.gwt.xml Datei hinzuzufügen. Aber ich bekomme die folgende Fehlermeldung:

[FEHLER] Kann 'se/mycompany/core/TheEnum.gwt.xml' auf Ihrem Klassenpfad nicht finden; könnte ein Tippfehler sein, oder vielleicht haben Sie vergessen, einen Klassenpfad-Eintrag für die Quelle hinzuzufügen?

Ich habe versucht, die Datei TheEnum.gwt.xml zu 'se/mycompany/core /' mit dem folgenden Kontext hinzuzufügen.

<module> 
    <inherits name='com.google.gwt.user.User'/> 
    <source path="TheEnum"></source> 
</module> 

Aber es beschwert sich immer noch über die gleiche Sache.

Ich vermute, dass ich die se.mycompany.core.TheEnum zu dem Klassenpfad in build.xml irgendwie hinzufügen muss, aber ich weiß nicht, wie oder wo.

Antwort

6

Das Tag "erben" wird verwendet, um andere Module und keine einzelnen Klassen zu importieren. Sie könnten erreichen, was Sie wollen durch eine einfache GWT-Modul unter dem core Paket erstellen, und erben dann das Modul in dem bestehenden:

eine Datei Core.gwt.xml unter Paket se.mycompany.core mit folgendem Inhalt erstellen:

<?xml version="1.0" encoding="UTF-8"?> 
<module> 
    <source path="" includes="TheEnum.java"/>  
</module> 

dann in dem vorhandenen Modul hinzufügen:

<inherits name='se.mycompany.core.Core'/> 
+0

Noch immer „Kann‚se/mycompany/core/Core.gwt.xml‘auf Ihrem Classpath finden, könnte ein Tippfehler sein, oder vielleicht vergessen haben, einen Klassenpfadeintrag für die Quelle hinzufügen? " – brange

+0

Überprüfen Sie Ihre Dateipfade und Paketnamen. Ich habe ein ähnliches Setup oft verwendet und es funktioniert für mich. –

+0

Wenn Sie Ihre * .gwt.xml-Datei mit maven in ein jar kompilieren, finden Sie möglicherweise in Ihrem jar die XML-Datei. Siehe den folgenden Thread für eine Korrektur: https://stackoverflow.com/questions/9798955/with-maven-clean-package-xml-source-files-are-not-included-in-classpath – Jake88

0

Besser die enum in Client-Paket, das heißt "se.mycomapny.web.gwtproject.client" hinzuzufügen. Und von der Server-Seite können Sie diese Enumeration aus dem Client-Paket verwenden.

Noch wollen Sie es nur auf der Serverseite, dann erstellen Sie ein Paket "se.mycompany.core.shared", erstellen Sie Core.gwt.xml im Paket "se.mycompany.core".

Core.gwt.xml:

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

Jetzt TheEnum.java in Paket erstellen "se.mycompany.core.shared". Und in der Haupt gwt.xml Datei schreiben unterhalb der Linie,

<inherits name='se.mycompany.core.Core'/> 
Verwandte Themen