2012-01-13 35 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的模塊。

相關問題