xml GWT向客户端项目添加外部java类
我有一个GWT项目。客户机代码位于“客户机”目录中。我想附加一个外部目录中的外部java类(主要是普通的POJO DTO类)。如何配置gwt。xml文件
我会遇到这样的错误:
“文件:/C:/development/projects/codespace/LocateMe/LocateMeWeb/src/com/dominolog/LocateMe/client/LocateMeWeb中的[ERROR]错误。爪哇的 [错误]第56行:没有可用于com类型的源代码。多米诺日志。定位我。模型dto。位置信息;您是否忘记继承所需的模块
# 1 楼答案
我会尽量说得更具体一些。我的工作区结构是: 工作空间
LocateMeWeb是一个具有标准项目布局的GWT应用程序。在LocateMeModel中,我有一些Java类,它们定义了LocateMeWeb、LocateMeMobile和LocateMeServer中常见的dto(数据传输对象)。因此,我需要GWT从这个目录(LocateMeModel)获取文件,并将其编译为客户机代码。有可能吗?据我所知,GWT只允许代码必须位于GWT项目的客户机目录下
# 2 楼答案
如果您有java源文件,只需将目录添加到您的源文件中即可。gwt。xml文件。例如,如果您有一个名为shared的子目录,您将添加以下行:
名为shared的文件夹必须位于主包下的一个级别。所以,如果你的项目。gwt。xml文件位于com。你的领域。投影共享文件夹。包将是com。你的领域。项目共享。请参阅http://code.google.com/webtoolkit/doc/latest/DevGuideOrganizingProjects.html#DevGuideModules中的源路径部分
如果您没有源代码,只有类,那么您必须按照Hilbrand所述导入模块
# 3 楼答案
下面是另一个有效的解决方案http://www.gordonizer.com/2012/01/referencing-third-party-library-source.html
I short(以防万一有一天这个链接也会失效):
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"/>
# 4 楼答案
GWT使用的任何Java类都必须有一个模块文件,并符合包含子包的包结构。有关更多详细信息,请参阅此stackoverflow答案:Adding Java packages to GWT。在这种情况下,可以在目录
com.dominolog.locateme.model
中创建模块文件(例如model.gwt.xml
),其中包含以下内容:在主模块文件中添加对此模块文件的引用,然后GWT将获取
com.dominolog.locateme.model.dto
包中的所有类2注:
GWT将查看目录(和子目录)中的所有类。
包中的类必须存在于源文件中,并且不能包含对GWT无法解析的其他库的任何引用(当在dto类中使用引用特定数据库用法的注释时,这可能是一个限制)
更新:将答案改写为更具体的答案