如何在GWT(Google Web Toolkit)项目中包含外部jar?

时间:2010-07-14 03:54:16

标签: java gwt jar

我有一个名为“xxx.jar”的外部jar文件。我在GWT项目中使用“xxx.jar”。

当我尝试在Ant中构建项目的JavaScript版本时,我在使用xxx的每个位置都会遇到以下类型的错误之一。在Ant中执行“gwtc”任务时,我遇到了这种错误,javac编译过程很顺利。

  
    

[错误]第45行:没有源代码可用于类型org.xxx.ObjectName;你忘了继承一个必需的模块吗?

  

好的,很明显它无法查看/使用xxx.jar。然而,解决这个问题在GWT中并不像在“普通”java中那么简单。从互联网ref1,我收集到我需要

  1. 在源目录
  2. 中包含xxx.jar中的所有源(.java)文件
  3. 在某种新的gwt.xml文件中添加此源目录
  4. 希望并祈祷所有java文件都可以通过GWT翻译:/
  5. 那么......我到底该怎么办?我需要生成的这个gwt.xml文件是什么(第2步)?我在哪里放置源目录,以及如何引用它(步骤1)?在GWT中添加外部jar文件所需的机械步骤究竟是什么?

2 个答案:

答案 0 :(得分:4)

因为必须将GWT源编译为JavaScript以在客户端浏览器上工作,所以GWT编译器可以使用源代码。

在他的教程

中查看Lars Vogels article的简要部分

这也是有道理的,因为Google Outline的限制,即使你可以获得源代码,这个JAR中的所有代码都可能无法编译为GWT javascript。

  

GWT只支持一小部分   Java 2中提供的类   标准版和企业版   库,就像这些库一样   相当大,依靠功能   在网络中不可用   浏览器。要找出究竟是哪个   支持类和方法   核心Java运行时包,请参阅   GWT JRE Emulation Reference

Robert Hanson在how to package GWT components

上逐步提供

祝你好运......

答案 1 :(得分:0)

您应该在src / com.myproject.blah(我的名为Setup.gwt.xml)下有一个项目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)点,如果extrnal lib只使用GWT编译器知道的那个Java子集,那么你很好。

我不是100%确定以上是正确的,但它似乎对我有用。