如何在 Tomcat 上部署 GWT

How to deploy GWT on Tomcat

我想弄清楚为什么当我为我的 GWT 项目创建一个 WAR 时,我无法像在我的开发模式中那样启动 Web 应用程序和 运行。

在我的开发模式下,我使用的是 googles 插件:

Run As --> Web Application

我得到 http://127.0.0.1:8888/Bspdir.html?gwt.codesvr=127.0.0.1:9997

效果很好!

请注意,我没有使用 GAE,我取消选中了使用 GoogleApp 引擎,并且在我的项目属性方面添加了动态 Web 模块。

所以现在,我希望投入生产,我是 'WARing' 项目,方法是右键单击 项目名称-->export-->Web-->War-->

Web project: bspdir

[见下面的屏幕截图] 我将 WAR 文件上传到我的 /usr/local/tomcat6/webapps 并在 URL 中键入以下内容:

http://MY_SERVER.com:8080/bspdir/

http://MY_SERVER.com:8080/Bspdir/

http://MY_SERVER.com:8080/bspdir/Bspdir.html

并且总是得到相同的错误消息:HTTP 状态 404 - /bspdir/

尝试先编译您的应用程序(Google -> GWT 编译)?编译后,尝试再次部署它。如果它仍然不起作用,您应该检查您的 web.xml,请参阅 e。 G。 Deploy GWT .war with Servlet in Tomcat

"Export WAR file" 操作是错误的方法,因为它不包含 GWT 特定设置和工件。

  1. 右键单击 Web 项目:Google -> GWT 编译,这应该会给你一个 /<your-web-project>/war 文件夹或类似的文件夹 (在项目设置中指定 -> Google -> Web 应用程序)
  2. 在项目资源管理器或导航器中展开 Web 项目
  3. 右键单击 war 文件夹:导出 -> 常规 -> 存档文件
  4. 将导出的 ZIP 文件从 *.zip 重命名为 *.war

好的,经过多次尝试我做对了。转到您应用程序的 WAR 文件夹(命令行)并使用以下命令手动创建它:

jar cvf PROJECT_NAME.war *

我将这个 war 文件上传到我的 tomcat 生产网络应用程序并且它有效。

当我试图用 eclipse 创建一个 war 文件时,它没有创建一个完整的文件(不知道为什么),因此出现 404 错误。

来自@Marcel Stör 和@adhg 的解决方案是正确的方法,如果你不像我一样愚蠢并且没有将你的 Eclipse GWT 项目转换为 Maven 项目并因此完全破坏任何自动化。

因此,如果您有项目,在 Eclipse 运行 的开发模式下工作正常,但您的 war 目录是空的,下面是给您的:制作 运行 非常简单=74=]手动。

我假设您的项目正在调用 "MyProj"

  1. 在 Package Explorer 中右键单击您的项目并选择 GWT -> 编译。
  2. 启动你最喜欢的文件管理器并创建一些临时目录(在你的驱动器上的任何地方)来存储你的部署文件,例如,myproj_deploy
  3. 前往 MyProj/target。您会找到目录,名称类似于 MyProj-0.0.1-SNAPSHOT。将其内容复制到 myproj_deploy 目录中。
  4. MyProj/target下有classes目录。进入里面,你会找到名为 "main" 的文件夹和 WEB-INF/classes 目录的根目录,因此创建 myproj_deploy/WEB-INF/classes 目录并将 MyProj/target/classes 的内容复制到其中,除了 "main" 目录。
  5. 现在,转到 MyProj/target/main/webapp。当然,您可以识别这些文件。这是您的 WEB-INF/web.xml、您的主机 HTML、您的 css 等。将所有内容复制到 myproj_deploy 的根目录中。 你快准备好了。
  6. 转到 $WORKSPACE/.metadata/.plugins/org.eclipse.wst.server.core/tmpN/wtpwebapps/MyProj/WEB-INF/ 并将 lib 目录复制到 myproj_deploy/WEB-INF/。那是你的项目库依赖项,最简单的方法是不要忘记将一些库包含到 WAR.
  7. myproj_deploy 的内容打包到 WAR 中,如@adhg answer 所示,并将此 WAR 复制到您的 Tomcat webapps 目录中。
  8. 尽情享受吧。

我花了几个小时才找到这个解决方案,也许这个 post 会帮助别人节省一些时间。

编辑:

  1. 我不知道,为什么,但是在处理 p.1 之前,清除项目的 'target' 目录。

  2. 在第 6 页复制替换 'classes' 目录。