GWT - 将外部Java类添加到客户端项目

时间:2010-02-26 12:02:16

标签: java xml eclipse gwt

我有一个GWT项目。客户端代码位于“客户端”目录中。我想附加外部目录中的外部java类(主要是普通的POJO DTO类)。如何配置gwt.xml文件?

我遇到了这种错误:

[错误]'文件中的错误:/ C:/development/projects/CodeSpaces/LocateMe/LocateMeWeb/src/com/dominolog/locateme/client/LocateMeWeb.java'                [错误]第56行:没有源代码可用于com.dominolog.locateme.model.dto.LocationInfo类型;你忘了继承一个必需的模块吗?

4 个答案:

答案 0 :(得分:5)

如果你有java源文件,你只需要将目录添加到.gwt.xml文件中。例如,如果您有一个名为shared的子目录,您将添加以下行:

<source path='shared'/>

名为shared的文件夹必须是主程序包下的一个级别。因此,如果您将项目.gwt.xml文件放在com.yourdomain.project,那么共享文件夹.package将是com.yourdomain.project.shared。请参阅http://code.google.com/webtoolkit/doc/latest/DevGuideOrganizingProjects.html#DevGuideModules

上的来源路径部分

如果您没有源代码并且只有类,那么您必须按照Hilbrand的说法导入模块。

答案 1 :(得分: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" /> </module>

    (为了便于阅读,我已经省略了XML标题)

  • 最后使用inherit标记将此新模块添加到主GWT模块中:

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

答案 2 :(得分: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类中使用引用特定数据库用法的注释时,这可能是一个限制)。

  3. 更新:重写的答案更具体。

答案 3 :(得分:0)

我会尝试更具体。我的工作区结构是: 工作区

  1. LocateMeModel
  2. LocateMeServer
  3. LocateMeMobile
  4. LocateMeWeb
  5. LocateMeWeb是一个具有标准项目布局的GWT应用程序。在LocateMeModel中,我有Java类,它们定义了LocateMeWeb,LocateMeMobile和LocateMeServer常用的dto(数据传输对象)。因此,我需要GWT从此目录(LocateMeModel)获取文件并将其编译为客户端代码。有可能吗?从我看到GWT只允许代码必须在GWT项目的客户端目录下。