2010-07-14 110 views
7

我有一個名爲「xxx.jar」的外部jar文件。我在我的GWT項目中使用「xxx.jar」。如何在GWT(Google Web Toolkit)項目中包含外部jar?

當我嘗試在Ant中構建我的項目的JavaScript版本時,在使用xxx的每個位置出現以下類型的錯誤之一。在Ant中執行「gwtc」任務時出現此類錯誤,javac編譯過程進行得很順利。

[ERROR]線45:沒有源代碼可用的類型org.xxx.ObjectName;你忘了繼承一個必需的模塊嗎?

好了,顯然這是無法看到/使用xxx.jar。然而,解決這個問題在GWT中並不像在「普通」java中那麼簡單。從互聯網ref1,據我瞭解,我需要

  1. 包括所有從xxx.jar源(的.java)文件的源目錄
  2. 在某種新gwt.xml文件中,這個源目錄添加
  3. 希望並祈禱,所有的Java文件都翻譯由GWT:/

所以...究竟我該怎麼辦?什麼是我需要生成的這個gwt.xml文件(第2步)?我在哪裏放源目錄,以及如何引用它(步驟1)?在GWT中添加外部jar文件所需的機械步驟究竟是什麼?

回答

4

因爲您的GWT源代碼已被編譯爲JavaScript以在客戶端瀏覽器上工作,所以GWT編譯器應該可以使用源代碼。

退房拉斯VOGELS article在他的教程在這個簡短的部分

這也有道理,因爲限制條件的Google Outline,所有在這個JAR的代碼可能無法編譯到GWT的JavaScript,即使你可以獲得源代碼。

GWT只支持在Java 2標準 和企業版 庫中可用 類的一小部分,因爲這些庫 相當大,依靠功能 是內網 瀏覽器不可用。要找出到底是哪 類和方法支持 核心Java運行時包,看到 GWT JRE Emulation Reference

羅伯特·漢森提供how to package GWT components

好運一步步...

0

你應該在src/com.myproject.blah一個項目的xml文件(我叫Setup.gwt.xml),它看起來像:

<?xml version="1.0" encoding="UTF-8"?> 
<module rename-to='setup'> 
    <!-- Inherit the core Web Toolkit stuff.      --> 
    <inherits name='com.google.gwt.user.User'/> 

    <!-- Inherit the default GWT style sheet. You can change  --> 
    <!-- the theme of your GWT application by uncommenting   --> 
    <!-- any one of the following lines.       --> 
    <inherits name='com.google.gwt.user.theme.standard.Standard'/> 
    <!-- <inherits name='com.google.gwt.user.theme.chrome.Chrome'/> --> 
    <!-- <inherits name='com.google.gwt.user.theme.dark.Dark'/>  --> 

    <!-- Other module inherits          --> 
    <inherits name="com.some.external.library.Utils"/> 

    <!-- Specify the app entry point class.       --> 
    <entry-point class='com.myproject.blah.client.Setup'/> 
    <stylesheet src="MyStyle.css"/> 
</module> 

build.xml文件中有一個部分:

<target name="libs" description="Copy libs to WEB-INF/lib"> 
    <mkdir dir="war/WEB-INF/lib" /> 
    <copy todir="war/WEB-INF/lib" file="${gwt.sdk}/gwt-servlet.jar" /> 
    <copy todir="war/WEB-INF/lib" file="/path/to/external/lib.jar" /> 

其中lib.jar包含從gwt.xml文件中引用的com.some.external.library.Utils源。關於第(3)點,如果外部庫只使用GWT編譯器知道的那個Java子集,那麼你很好。

我不是100%確定以上是正確的,但它似乎確實對我有用。

相關問題