我有一个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类型;你忘了继承一个必需的模块吗?
答案 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注:
GWT会查看目录(和子目录)中的所有类
包中的类必须存在于源文件中,并且可能不包含对GWT无法解析的其他库的任何引用(在dto类中使用引用特定数据库用法的注释时,这可能是一个限制)。
更新:重写的答案更具体。
答案 3 :(得分:0)
我会尝试更具体。我的工作区结构是: 工作区
LocateMeWeb是一个具有标准项目布局的GWT应用程序。在LocateMeModel中,我有Java类,它们定义了LocateMeWeb,LocateMeMobile和LocateMeServer常用的dto(数据传输对象)。因此,我需要GWT从此目录(LocateMeModel)获取文件并将其编译为客户端代码。有可能吗?从我看到GWT只允许代码必须在GWT项目的客户端目录下。