10

検索してみましたが、独自のパッケージを GWT プロジェクトに追加する方法について定義された方法を思いつくことができませんでした。

私のツリー構造は次のようになります。

-com.mycompany
  -public
    MyApplication.html
  MyApplication.gwt.xml


-com.mycompany.client
  MyApp.java

-com.mycompany.gui
  TableLayout.java

私が見た答えは、次のように、gwt.xml ファイルのルート ディレクトリに関連するパッケージを追加することを示しています。

<module>
  <inherits name="com.google.gwt.user.User" />
  <entry-point class="com.mycompany.client.MyApp" />
  <source path="client" />
  <source path="gui" />
</module>

次に、不平を言います:

Unable to find type 'com.technicon.client.MyApp'
   Hint: Previous compiler errors may have made this type unavailable
   Hint: Check the inheritance chain from your module; it may not be inheriting a required module or a module may not be adding its source path entries properly

誰かが私が間違っていることと、これを修正する方法を教えてもらえますか?

4

2 に答える 2

9

@rustyshelf が指摘したように、gwt は下にあるすべてのものをclient.*自動的に変換しますが、クライアント パッケージの外にあるものを保持したい場合があります (いくつかのプロジェクトでそれらを再利用することはそれらの 1 つかもしれません)。解決策は、source要素を使用して他のパッケージをプロセスに追加することにあります。

トリックがあります。構成ファイルを移動するgwt.xmlか、新しい構成ファイルを作成する必要があるかを決定する必要があります。

特にあなたの場合(両方のパッケージがパッケージのルートを共有している場合、com.mycompany)、<project_name>.gwt.xmlファイルを最も一般的なパッケージの一番上に移動し、新しいパッケージをソースとして追加するだけです(<source path="client"/>そこにも保持します)。ファイルを次のようにします。

<source path="client"/>
<source path="gui"/>

一方、パッケージがルートを共有していない場合は*.gwt.xml、ソース要素のみを含む新しいファイルを作成し、追加するサブパッケージの親パッケージに配置します。つまり、次のようになります。

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

ネストされたサブパッケージにコンパイル アクセスを許可する必要がある場合は、それらを/like で区切って実行することに注意してください。"admin/client"

これが、軌道に戻り、可能な限り最善の方法でコードを整理するのに役立つことを願っています.

于 2010-03-11T17:27:24.980 に答える
5

2 つのソース パス行を削除できます。これは、デフォルトで GWT がルートに関連するものをすべて取得し、クライアント パッケージ内にあるものを取得するためです。また、gui パッケージをクライアント パッケージに移動する必要があるため、次のようになります。

-com.mycompany
  -public
    MyApplication.html
  MyApplication.gwt.xml


-com.mycompany.client
  MyApp.java

-com.mycompany.client.gui
  TableLayout.java


<module>
  <inherits name="com.google.gwt.user.User" />
  <entry-point class="com.mycompany.client.MyApp" />
</module>

MyApp.java が実際の EntryPoint であると仮定すると、これは問題なく機能するはずです。

もう 1 つ注意すべき点は、GWT JRE エミュレーション ライブラリの一部ではない Java クラスを使用することはできず、使用するとプロジェクトがコンパイルされないことです。ただし、これについては非常に具体的なエラーが発生するはずです。たとえば、エミュレートされていない場合、java.math.BigDecimal などのライブラリ クラスは使用できません。ただし、作成した独自のクラスはすべて使用できます。

于 2009-01-13T21:19:57.287 に答える