2012-10-02 9 views
5

私はサーバー側で使用されているENUMを持っています。 私はクライアント側(GWT)でもこの列挙型を使いたいと思っています。GWTプロジェクトで外部Javaソースを継承する

これは構造体である:

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

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

私は私のgwtproject.gwt.xmlファイルに

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

を追加しようとしました。しかし、次のエラーメッセージが表示されます。

[エラー]クラスパスに「se/mycompany/core/TheEnum.gwt.xml」が見つかりません。タイプミスの可能性があります。あるいは、クラスパスのエントリをソースに含めるのを忘れていた可能性もあります。

私はTheEnum.gwt.xmlファイルを 'se/mycompany/core /'に次のコンテキストで追加しようとしました。

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

しかし、それはまだ同じ事について不平を言う。

私はse.mycompany.core.TheEnumをbuild.xmlのクラスパスに追加する必要があると推測していますが、どうやってどこか分かりません。

答えて

6

"inherits"タグは、個々のクラスではなく他のモジュールをインポートするために使用されます。あなたはcoreパッケージの下に簡単なGWTモジュールを作成することによって、あなたが望むものを達成した後、既存のもので、そのモジュールを継承することができます:

ファイルを作成するには、次の内容でパッケージse.mycompany.coreCore.gwt.xml呼ば:

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

は、その後、あなたの既存のモジュールに追加します、クライアントパッケージ、すなわち、「se.mycomapny.web.gwtproject.client」を列挙型を追加する

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

はまだ「あなたのクラスパス上の 『SE/mycompanyの/コア/ Core.gwt.xml』を見つけることができません取得し、タイプミスかもしれない、または多分あなたが忘れてしまいましたソースのクラスパスエントリを含める? " – brange

+0

ファイルパスとパッケージ名を再度確認してください。私は何度も同様のセットアップを使用しています。 –

+0

* .gwt.xmlファイルをmavenを使ってjarファイルにコンパイルしている場合、jarにxmlファイルが見つからないことがあります。修正については、次のスレッドを参照してください。https://stackoverflow.com/questions/9798955/with-maven-clean-package-xml-source-files-are-not-included-in-classpath – Jake88

0

良いです。そして、サーバー側から、この列挙型をクライアントパッケージから使用することができます。

まだサーバー側にしたいのですが、パッケージ "se.mycompany.core.shared"を作成し、パッケージ "se.mycompany.core"にCore.gwt.xmlを作成します。

Core.gwt.xml:

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

今のパッケージにTheEnum.javaを作成するには、 "se.mycompany.core.shared"。そして、線の下のメインgwt.xmlファイルの書き込みで、

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