如何在GWT中引用第三方库源代码供客户端使用?

如何在GWT中引用第三方库源代码供客户端使用?,gwt,client-side,pojo,Gwt,Client Side,Pojo,GWT文档规定,客户端上编译为JavaScript的所有源代码必须位于GWT.xml文件的子包中。当引用第三方库时,这是如何工作的 具体地说,如果我有一个库foo.jar,我想使用一些POJO(它们是可序列化的),并且不吸入任何非可序列化的代码,我如何使用这些POJO?我如何告诉GWT他们的源代码在哪里?还请记住,GWT编译器需要实际的Java源代码来编译为javascript,因此,只有类可用且所有类都可序列化是不够的。为了让RPC通过网络发送类,当类到达客户端时,它们必须能够作为JS使用 也

GWT文档规定,客户端上编译为JavaScript的所有源代码必须位于
GWT.xml
文件的子包中。当引用第三方库时,这是如何工作的


具体地说,如果我有一个库
foo.jar
,我想使用一些POJO(它们是
可序列化的
),并且不吸入任何非
可序列化的
代码,我如何使用这些POJO?我如何告诉GWT他们的源代码在哪里?

还请记住,GWT编译器需要实际的Java源代码来编译为javascript,因此,只有类可用且所有类都可序列化是不够的。为了让RPC通过网络发送类,当类到达客户端时,它们必须能够作为JS使用


也就是说,看看gwt用户中的模块
javax/validation/validation.gwt.xml
。这个文件放在那里,以便
javax.validation
中的其他包——甚至在其他JAR中——可以编译成JS进行客户端验证。如果您的类路径上有一个jar(和源代码),代码位于
com.thirdparty.pojo
,那么您可以在自己的项目中,在自己的源代码中的同一目录中创建一个模块文件(类似于
com/thirdparty/pojos/thirdpartrpc.gwt.xml
,并在其中放入
元素,以表明整个包可以合法地翻译为JS。可能会有一些文件无法翻译-使用exclude标记来处理这些文件。

如果您可以控制将foo打包到foo.jar中,并且把所有的资料都收集起来,那就容易了


如果您有一个打包的foo.jar,并且碰巧有源代码,那么您需要扩展foo.jar,将源代码复制到分解的.jar目录中,生成一个简单的GWT module.xml文件,并向项目的模块添加一个标记。

对。我在下面写了完整的内容。它失败了,出现了一个非常奇怪的ClassCastException,但是我看到你关于排除的评论,灯熄灭了,果然,我的包中还有其他类,我不想序列化(也没有修复它们以适合GWT)。所以,谢谢你!我找到了一个解决方案,我不确定这是否是一种幸运的方式,但我已经在我的博客中发表了完整的评论: