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

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

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

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

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

  • 将来自xxx.jar的所有源(.java)文件包含在源目录中
  • 在某种新的gwt.xml文件中添加这个源代码目录
  • 希望并祈祷所有的Java文件都可以通过GWT进行翻译:/
  • 那么......我到底做了什么? 什么是我需要生成的这个gwt.xml文件(第2步)? 我在哪里放源目录,以及如何引用它(步骤1)? 在GWT中添加外部jar文件所需的机械步骤究竟是什么?


    由于您的GWT源代码必须编译为JavaScript以在客户端浏览器上工作,因此源代码应该可供GWT编译器使用。

    查看Lars Vogels的文章,在他的教程中简要介绍了这一点

    这也是有道理的,由于Google纲要的限制,即使您可以获取源代码,此JAR中的所有代码都可能无法编译为GWT javascript。

    GWT仅支持Java 2 Standard和Enterprise Edition库中可用类的一小部分,因为这些库非常大,并且依赖于Web浏览器中不可用的功能。 要找出核心Java运行时包支持哪些类和方法,请参阅GWT JRE Emulation Reference

    Robert Hanson一步一步地介绍如何打包GWT组件

    祝你好运...


    你应该在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%肯定上述是正确的,但它确实对我有用。

    链接地址: http://www.djcxy.com/p/46907.html

    上一篇: How to include a external jar in a GWT (Google Web Toolkit) project?

    下一篇: How do I Add an Event Handler To the RowUpdated event in a table adapter