2012-01-13 79 views
3

GWT文档指出,在客户端编译为JavaScript的所有源代码必须位于gwt.xml文件的子包中。当一个人引用第三方库时,这是如何工作的?如何在GWT中引用客户端使用的第三方库源代码?

特别是,如果我有一个图书馆foo.jar,我想用一些的POJO(这是Serializable),并在任何非Serializable代码不吸,我怎么能使用这些POJO的?我该如何告诉GWT源代码在哪里?

+0

我找到了一个解决方案,我不确定它是否是幸运的方式,但我在我的博客中放置了完整的文章:http://www.gordonizer.com/2012/01/referencing-third -party-library-source.html – icfantv 2012-01-17 16:37:51

回答

5

还要记住,GWT编译器需要将实际的Java源代码编译为javascript,所以只有这些类是可用的并且都是可序列化的是不够的。对于RPC通过线路发送类,它们必须能够在到达客户端时用作JS。

这就是说,看一下gwt-user,在模块javax/validation/Validation.gwt.xml处.his文件放在那里,以便javax.validation中的其他包 - 即使在其他jar文件中 - 也可以编译为JS用于客户端验证。如果您的类路径中有代码为com.thirdparty.pojos的jar包(和源代码),那么您可以在自己的源代码中的相同目录中创建一个模块文件(类似于com/thirdparty/pojos/ThirdParthRpc.gwt.xml,并在其中放入<source path="" />元素以指示整个软件包对于翻译JS是合法的,可能会有一些文件无法翻译 - 使用排除标签来处理这些文件。

+0

对。我把下面的全文写下来。这是一个真正奇怪的ClassCastException失败,但后来我看到你的意见关于排除一个灯熄灭,果然,我有包中的其他类,我不想序列化(并没有固定,使他们没有问题为GWT)。所以,谢谢你! – icfantv 2012-01-17 16:51:34

0

如果你有将foo包装到foo.jar中的控制权,并且你拥有全部那么这很容易

如果你有一个打包的foo.jar,并且碰巧有源代码,那么你需要展开foo.jar,将源代码复制到爆炸的.jar目录中,生成一个简单的GWT module.xml文件并为您的公关添加标签oject的模块。

相关问题