2010-02-26 40 views
4

我有一個GWT項目。客戶端代碼位於「客戶端」目錄中。我想附加一個外部目錄中的外部java類(主要是普通的POJO DTO類)。如何配置gwt.xml文件?GWT - 將外部Java類添加到客戶端項目

我得到這樣的錯誤:

[錯誤]的錯誤在「文件:/ C:/development/projects/CodeSpaces/LocateMe/LocateMeWeb/src/com/dominolog/locateme/client/LocateMeWeb.java ' [錯誤]第56行:沒有源代碼可用於com.dominolog.locateme.model.dto.LocationInfo類型;你忘了繼承一個必需的模塊嗎?

回答

5

如果您有java源文件,您只需將該目錄添加到.gwt.xml文件。舉例來說,如果你有一個名爲的子目錄共享您將添加以下行:稱爲共享

<source path='shared'/> 

該文件夾必須是你的主包下一個水平。因此,如果項目.gwt.xml文件位於com.yourdomain.project,則共享folder.package將爲com.yourdomain.project.shared。請參閱源路徑部分在http://code.google.com/webtoolkit/doc/latest/DevGuideOrganizingProjects.html#DevGuideModules

如果你沒有來源,並只有你必須導入模塊Hilbrand已經聲明的類。

+0

好的。但是,如果我想添加的代碼不在「客戶端」下,即它是我的工作區內的外部目錄? – cubesoft 2010-03-02 11:24:28

+0

它在同一個項目中嗎?如果是這樣,我假設它開始於相同的包(在我的例子中是com.yourdomain.project),我所概述的將會起作用。它不需要在客戶端下。如果它來自另一個源/項目,我不知道如何將它添加到項目中。 – Carnell 2010-03-02 17:16:09

+0

我有同樣的問題,在NetBeans中,我需要刪除「從jar中排除」.java文件 – 2015-05-31 11:33:59

1

任何由GWT使用的Java類都必須有一個模塊文件並符合包含子包的包結構。看到這個stackoverflow答案更多細節:Adding Java packages to GWT。在這種情況下,一個模塊文件(比如model.gwt.xml)可以在包含以下內容的目錄com.dominolog.locateme.model創建:

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

在主模塊文件添加到該模塊文件的引用,然後GWT將採取一切階級com.dominolog.locateme.model.dto包。

2注:

  1. GWT將着眼於目錄中的所有類(和子目錄)

  2. 在包中的類必須出現在源文件,並不得包含任何引用其他庫不能被GWT解析(這可能是在使用dto類註釋時引用特定數據庫用法的限制)。

更新:重寫回答更具體。

+0

謝謝,但你指的是文章沒有解釋什麼,但我必須在客戶端目錄下加我的所有代碼。這是我不能接受的。 – cubesoft 2010-02-26 15:10:53

+0

我會盡量做得更具體。我的工作區結構是: Workspace-> LocateMeModel LocateMeServer LocateMeMobile LocateMeWeb 的LocateMeWeb是GWT應用程序與標準的項目佈局。在LocateMeModel中,我有定義dto(數據傳輸對象)的Java類,這些對於LocateMeWeb,LocateMeMobile和LocateMeServer都是常見的。因此,我需要GWT從該目錄(LocateMeModel)獲取文件並將其編譯爲客戶端代碼。它有可能嗎?從我看到的GWT只允許代碼必須在GWT項目的客戶目錄下。 – cubesoft 2010-03-03 13:52:32

0

我會盡量做得更具體。我的工作區結構是: 工作區

  1. LocateMeModel
  2. LocateMeServer
  3. LocateMeMobile
  4. LocateMeWeb

的LocateMeWeb是GWT應用程序與標準的項目佈局。在LocateMeModel中,我有定義dto(數據傳輸對象)的Java類,這些對於LocateMeWeb,LocateMeMobile和LocateMeServer都是常見的。因此,我需要GWT從該目錄(LocateMeModel)獲取文件並將其編譯爲客戶端代碼。它有可能嗎?從我看到的GWT只允許代碼必須在GWT項目的客戶目錄下。

3

這是另一種解決方案http://www.gordonizer.com/2012/01/referencing-third-party-library-source.html

我短(以防萬一這個環節也得到無效的某一天):

  • 假設包含您要添加的類外包裝是com.foo.bar.bat
  • 在您的項目中,您將創建包com.foo.bar(不含子包bat)。
  • 在您的新包你創建一個新的GWT模塊文件Foo.gwt.xml與內容,如

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

    (我已經忽略,則XML頭的可讀性的緣故)

  • 最後使用inherit標籤將此新模塊添加到您的主GWT模塊中:

    <inherits name="com.foo.bar.Foo"/>