如何在GWT中引用客户端使用的第三方库源代码?
GWT文档指出,在客户端编译为JavaScript的所有源代码必须位于gwt.xml
文件的子包中。当一个人引用第三方库时,这是如何工作的?如何在GWT中引用客户端使用的第三方库源代码?
特别是,如果我有一个图书馆foo.jar
,我想用一些的POJO(这是Serializable
),并在任何非Serializable
代码不吸,我怎么能使用这些POJO的?我该如何告诉GWT源代码在哪里?
还要记住,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是合法的,可能会有一些文件无法翻译 - 使用排除标签来处理这些文件。
对。我把下面的全文写下来。这是一个真正奇怪的ClassCastException失败,但后来我看到你的意见关于排除一个灯熄灭,果然,我有包中的其他类,我不想序列化(并没有固定,使他们没有问题为GWT)。所以,谢谢你! – icfantv 2012-01-17 16:51:34
如果你有将foo包装到foo.jar中的控制权,并且你拥有全部那么这很容易
如果你有一个打包的foo.jar,并且碰巧有源代码,那么你需要展开foo.jar,将源代码复制到爆炸的.jar目录中,生成一个简单的GWT module.xml文件并为您的公关添加标签oject的模块。
我找到了一个解决方案,我不确定它是否是幸运的方式,但我在我的博客中放置了完整的文章:http://www.gordonizer.com/2012/01/referencing-third -party-library-source.html – icfantv 2012-01-17 16:37:51