[英]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.