2010-07-14 78 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%确定以上是正确的,但它似乎确实对我有用。

相关问题