簡體   English   中英

將Java包添加到GWT

[英]Adding Java packages to GWT

我已經嘗試過搜索,但是無法想出如何將自己的包添加到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

任何人都可以告訴我我做錯了什么以及如何解決這個問題?

盡管如此,正如@rustyshelf指出的那樣,gwt將轉換client.*下的所有內容client.*有時候,你會想要將東西保存在客戶端軟件包之外(在多個項目中重用它們可能就是其中之一)為此,解決方案仍然在於使用source元素向流程中添加其他包。

現在有一個技巧,你必須決定是否要移動gwt.xml配置文件或是否需要創建一個新文件。

特別是對於您的情況(兩個包共享包中的根,com.mycompany),您只需將<project_name>.gwt.xml文件移動到最常見的包,只需添加新包作為源(和同時保持<source path="client"/> ,從而使您的文件看起來像:

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

另一方面,如果包不共享任何根,只需創建一個僅包含源元素的新*.gwt.xml文件,並將其放在父包中,添加到要添加的子包中,即:

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

請注意,如果您需要對嵌套子包進行編譯訪問,請使用"admin/client"/ like分隔它們。

希望這有助於您回到正軌並以最佳方式組織代碼。

您可以擺脫兩個源路徑行,因為默認情況下,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,那么這應該可以正常工作。

另外需要注意的是,您不能使用不屬於GWT JRE Emulation庫的java類,如果您這樣做,您的項目將無法編譯。 你應該得到關於這個的非常具體的錯誤。 例如,如果未模擬它們,則不能使用java.math.BigDecimal等庫類。 您創建的所有類都可以使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM