GWT文档指出,在客户端编译为JavaScript的所有源代码必须位于gwt.xml
文件的子包中。当一个人引用第三方图书馆时,这是如何工作的?
具体来说,如果我有一个库foo.jar
并且我想使用一些POJO(Serializable
)并且不使用任何非Serializable
代码,我该如何使用这些POJO?如何告诉GWT源代码的位置?
答案 0 :(得分:5)
请记住,GWT编译器需要实际的Java源代码才能编译为javascript,因此这些类是可用的并且所有类都可序列化是不够的。要使RPC通过线路发送类,它们必须能够在到达客户端时用作JS。
也就是说,看看gwt-user,在模块javax/validation/Validation.gwt.xml
。他的文件放在那里,以便javax.validation中的其他包 - 甚至在其他jar中 - 可以编译成JS用于客户端 - 边验证。如果你的类路径上有一个jar(和源代码),代码在com.thirdparty.pojos
,你可以在自己的项目中在你自己的源代码中创建一个模块文件(类似com/thirdparty/pojos/ThirdParthRpc.gwt.xml
,并放入其中的<source path="" />
元素表示整个包合法转换为JS。可能会有一些文件无法翻译 - 使用exclude标记来处理这些文件。
答案 1 :(得分:0)
如果您可以控制包装foo到foo.jar,并且拥有所有来源,那么这很容易。
如果你有一个打包的foo.jar,并且碰巧有源代码,那么你需要扩展foo.jar,将源复制到爆炸的.jar目录中,生成一个简单的GWT module.xml文件并添加项目模块的标签。