gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 20:14:03 24 4
gpt4 key购买 nike

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

JAR 包含:

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

库模块继承自web app:

<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 View 和 RequestFactory 引起的。在开发模式下启动或编译 Web 应用程序会导致错误消息,指出缺少 CSS 文件和对 emul.java.util 包下生成源的非法引用(我尝试将此包和所有其他生成的源包含在 JAR 中,但它没有帮不上忙。)

谁能告诉我 JAR 中需要包含什么?使用 UiBinder 和 RequestFactory 的库模块是否需要任何其他资源?

有没有人成功将使用 RequestFactory 和 UiBinder 的 GWT 库模块打包成 JAR?

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

最佳答案

要么是我误解了您的问题,要么是您错误地将 GWT 编译与 Java 字节码编译相关联。

传统 Java 开发

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

GWT 并非如此。

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

GWT war

  1. GWT 还促进了客户端对齐以及与服务器端的通信。
  2. 服务器端通常是部署到 JEE war 结构中的传统 Java。
  3. 因此部署 war 将 GWT 客户端编译成 javascript 以及 JEE .class 字节码文件。
  4. 但是,GWT javascript 文件与 HTML、CSS 和其他 URL 可寻址资源一起放在 war 的 URL 可见部分。
  5. 服务器端编译的 java 字节码文件或 jar 被放置在无法通过 URL 寻址的 class 和 lib 目录中。

因此,

  1. GWT 编译的部署结构不能用于开发。
  2. GWT被编译成javascript部署war结构。
  3. 没有将 GWT 编译资源打包成用于部署的 jar。
  4. 编译好的GWT资源必须打包成URL可寻址 war 的一方。
  5. 在编译的 javascript 文件中“没有类似类路径的东西”。为了方便 JSNI,模拟了 javascript 中的任何类路径概念。

总结

已编译的 GWT 资源不可用,也不会对 GWT 开发可见,因为......GWT开发需要java源,GWT客户端部署都是javascript in war,javascript不像bytecode jar/files。

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

GWT 开发 jars = 源 jars,

GWT 部署 = javascript 和资源的 war 。

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

关于gwt - 需要帮助将 GWT 库模块打包到 JAR 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8623764/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com