需要帮助将GWT库模块打包到JAR中

时间:2011-12-24 09:35:38

标签: gwt jar package uibinder requestfactory

我正在尝试将GWT库模块打包到JAR文件中,并通过将JAR文件添加到其类路径中,在单独的GWT Web应用程序中使用该库。

JAR包含:

  • Java来源
  • RequestFactory生成的来源
  • UiBinder生成的资源
  • 类文件
  • 库模块描述符
  • UiBinder XML文件

库模块继承自Web应用程序:

<module> <!-- my web app's module descriptor -->
    ...
    <inherits name="[path to my library module].Library"/>
    ...
</module>

但是,我遇到了

Deferred binding failed for '[path to mylibrary].client.ClientFactory'...
当我尝试启动Web应用程序时出现

错误,该应用程序在其onModuleLoad()方法中初始化库。失败是由库模块使用的UiBinder视图和RequestFactory引起的。在开发模式下启动或编译Web应用程序会导致错误,消息显示缺少CSS文件以及在emul.java.util包下对生成的源的非法引用(我尝试在JAR中包含此包和所有其他生成的源,但它没有'帮助。)

有人能告诉我JAR需要包含哪些内容?使用UiBinder和RequestFactory的库模块是否还需要其他资源?

是否有人成功打包了一个将RequestFactory和UiBinder用于JAR的GWT库模块?

进一步澄清:问题是关于创建GWT库模块;包含客户端和服务器组件的模块,RequestFactory和UiBinder。请注意,GWT库模块打包到JAR中,而带有入口点的常规GWT模块打包到WAR中。我尝试从另一个GWT项目打包这样的库模块和GWT <inherit>失败了。

1 个答案:

答案 0 :(得分:2)

或者,我误解了你的问题,或者你错误地将GWT编译与Java字节码编译相关联。

传统的Java开发

  1. Java源代码被编译成Java字节码.class文件。
  2. 在开发期间和期间编译的.class文件 部署。
  3. 编译的.class文件可以在两者的类路径中使用 开发和部署
  4. .class文件是jar还是文件夹无关紧要 层次结构,只要它们的位置符合各自的要求 包命名空间。
  5. Java源文件无法部署到部署类路径中, 但您可以将JSP源文件作为JSP部署到战争中。
  6. GWT不是这样。

    1. GWT是客户端开发。
    2. GWT编译成Javascript。
    3. 生成的javascript打包到war文件夹中。
    4. 即,编译成可执行文件的GWT是javascript文件。
    5. GWT编译要求所有Java类都是源文件。
    6. Java类引用的任何Java库也必须是Java源文件。
    7. GWT战争

      1. GWT还有助于客户端与服务器端的对齐和通信。
      2. 服务器端通常是传统的Java部署到JEE战争结构中。
      3. 因此,部署战争将GWT客户端编译为javascript以及JEE .class字节码文件。
      4. 但是,GWT javascript文件与HTML,CSS和其他URL可寻址资源一起放在战争的URL可见部分。
      5. 服务器端编译的java字节码文件或jar放在不能URL寻址的类和lib目录中。
      6. <强>因此

        1. GWT编译的部署结构不能用于开发。
        2. GWT被编译成javascript部署战结构。
        3. 包装GWT编译资源成为“没有这样的东西” 用于部署的jar。
        4. 必须将编译的GWT资源打包到URL-addressable中 战争的一面。
        5. 编译的javascript文件中有类似路径的“没有这样的东西”。 javascript中的任何类路径概念都是为JSNI的方便而模拟的。
        6. 结论

          编译的GWT资源不可用,也不会对GWT开发可见,因为...... GWT开发需要java源代码,GWT客户端部署是战争中的javascript,而javascript不像字节码jar /文件。

          因此,在GWT中,包装可用于开发和部署的jar的“没有这样的东西”。一些示例和教程将开发和部署文件打包到一个jar中 - 但该jar本质上是一个zip,您必须首先从开发部分拆分部署部分。

          GWT Development jars = source jars,

          GWT部署= javascript和资源的战争。

          在开始进入GWT开发之前,您应该至少有3-6个月的经验,使用JSP,servlet,HTML和javascript编写传统的JEE应用程序。这将有助于你灌输强烈的服务器端与客户端,战争与jar的隔离感,从而理解为什么GWT首先被发明。您将了解部署过程。