我有一个GWT模块,其中包括我希望在servlet和客户端上访问的几个DTO。在Eclipse中开发时,我使用GWT xml创建了一个单独的项目:
<module rename-to='commonmodels'>
<source path="models"/>
</module>
我有另一个GWT项目,其中包含UI和servlet代码。我包含了commonmodels项目(使用Build Path-&gt; Projects-&gt; Add)并在我的主项目中包含了模块include语句:
<inherits name="com.techflow.bcweb.common.CommonModels" />
然后,我进行一次RPC调用,在servlet上创建一个对象(在CommonModels中定义了它的类)并将其返回给客户端。
这一切似乎都在GWT托管模式下工作,但是当我运行war并将其部署在服务器上时,它会抛出ClassDefNotFound异常。我检查了战争,并确认包含模块中的.class文件不存在。我的问题是 - 如何告诉GWT编译器不仅要将包含的模块的类编译成javascript,还要使这些类可以被servlet访问?我知道在GWT项目中,您可以创建一个“共享”文件夹,使其类可以被客户端和servlet访问。有没有办法将独立模块中的类标记为“共享”,以便任何继承它的GWT模块都可以在客户端和servlet中访问它的类?
提前感谢您的帮助!
答案 0 :(得分:0)
将主项目部署到服务器时,项目甚至不知道您的其他项目是否存在!只有在Eclipse中运行项目时,Eclipse“Project&gt;&gt; Add”才会起作用。要解决这个问题,您只需创建一个包含commonmodels二进制文件的jar文件,然后将其添加到主项目的类bin文件夹中:
war/WEB-INF/lib/
除非您使用Maven ...否则只需将项目安装到您的存储库中,并在您的pom.xml文件中添加一个依赖项。