【问题标题】:GWT Development Mode with Eclipse/Maven使用 Eclipse/Maven 的 GWT 开发模式
【发布时间】:2011-04-03 20:55:10
【问题描述】:

我刚开始使用 GWT。我使用 Eclipse 并安装了 GWT 插件。

我已按照此处Maven GWT 2.0 and Eclipse 的指示使用 gwt-maven-plugin 设置 GWT 项目。当我运行 Maven 目标 gwt:compile gwt:run 时,会启动 GWT 开发模式,我可以将其中的 url 复制到我的浏览器并查看标签。

但是项目有这个问题:

Description: The web.xml file does not exist
Resource: WEB-INF   
Path: /GWTExample/war
Location: Unknown
Type: Google Web App Problem

如果我尝试将项目作为 Google Web 应用程序运行,我会收到以下警告:

[WARN] No startup URLs supplied and no plausible ones found -- use -startupUrl

我可以通过将 web.xml 复制到 war 目录来解决这个问题,但是当作为 Google Web App 运行时,我仍然会遇到 URL 问题。

如果我在 Eclipse 中使用 Maven 和 GWT,我是否应该忽略 web.xml 问题并始终通过 Maven 目标在开发模式下运行应用程序?或者有没有办法进行设置,以便我可以作为 Google Web App 运行?

编辑:与上述相关,是否可以调试在 gwt:compile gwt:run 启动的开发模式下运行的 GWT 应用程序?我在我的应用程序中添加了断点,但它并没有停止它们。我不确定这是我配置错误还是不可能。

更新:

响应 Prem 的回答...

当我运行compile gwt:run 时,不会复制 web.xml 文件。当我运行install gwt:run 时,我得到了这个错误:

[INFO] --- gwt-maven-plugin:1.2:test (default) @ SampleGWT ---
[INFO] using GWT jars from project dependencies : 2.0.4
[INFO] establishing classpath list (scope = test)
[ERROR] java.lang.NoClassDefFoundError: org/codehaus/mojo/gwt/test/MavenTestRunner
[ERROR] Caused by: java.lang.ClassNotFoundException: org.codehaus.mojo.gwt.test.MavenTestRunner
[ERROR]     at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
[ERROR]     at java.security.AccessController.doPrivileged(Native Method)
[ERROR]     at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
[ERROR]     at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
[ERROR]     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
[ERROR]     at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
[ERROR] Could not find the main class: org.codehaus.mojo.gwt.test.MavenTestRunner.  Program will exit.
[ERROR] Exception in thread "main"

我猜错误 http://jira.codehaus.org/browse/MGWT-24 包含在 gwt-maven-plugin 的 1.2 版中。通常我不会在构建 war 文件的项目上运行 install,但我希望至少能够通过构建周期的测试阶段。

有没有人知道为什么我会在安装时收到此错误,而不是在编译目标时收到此错误?另外,我是否应该期望将 web.xml 文件从 src/main/webapp/WEB-INF/web.xml 复制到 /war 目录?

【问题讨论】:

    标签: eclipse gwt maven-2


    【解决方案1】:

    如果您右键单击您的项目并转到 Properties -> Google -> Web Application,您的 WAR 目录可能类似于 warsrc/main/webapp/WEB-INF/classes

    将其更改为 src/main/webapp。 同时取消选中“从该目录启动和部署...”旁边的框

    这就是为我解决这个问题的原因。同时也修复了“找不到gwt-servlet.jar”的问题。

    【讨论】:

      【解决方案2】:

      我也收到了这个警告:

      未提供启动 URL,也未找到合理的 URL

      当我关注this gwt tutorial

      在该屏幕截图中,没有带有“生成示例代码”的复选框。在我的 IDE(sdk 2.5)中是这样,所以我没有选中...

      它没有创建任何serverclient 包,我已经按照教程要求手动创建了client。直到该步骤的教程并没有说我也必须有一个 server 包。项目中缺少那个和他的配置。

      【讨论】:

        【解决方案3】:

        说明:web.xml文件不存在

        gwt-maven-plugin 创建一个具有“战争”打包格式的项目(它是一个网络应用程序,所以这里没有惊喜)。此项目的 Web.xml 将位于“src/main/webapp”文件夹下,该文件夹将作为 maven 构建生命周期中“资源”阶段的一部分复制到“战争”目录(设置为输出目录)-循环。您应该始终使用

        mvn 编译 gwt:run

        mvn install gwt:run

        这样资源就被复制了,所有的java文件都被编译了,gwt:compile也被调用了(因为它自动绑定到'compile'阶段)

        [WARN] 未提供启动 URL,也未找到合理的启动 URL——使用 -startupUrl

        根据您用作参考的 * 链接,只有您的 maven 构建文件是使用 startupUrl 设置的。为了让它在 Eclipse 中工作,您必须编辑项目的运行配置并将“-statupUrl”命令行参数添加到“参数”面板中的现有参数中。

        但是,这只是一个警告,它不应阻止您从 Eclipse 运行 GWT 应用程序。如果您在这里也遇到同样的“web.xml”问题,可能是因为在调用“作为 Web 应用程序运行”之前没有在 IDE 中编译项目。我建议您禁用此项目的“自动构建”选项,并始终手动构建并调用“GWT 编译”,然后尝试“作为 Web 应用程序运行”

        编辑:与上述相关,是否可以调试在由 gwt:compile gwt:run 启动的开发模式下运行的 GWT 应用程序?

        一般来说,您必须使用“远程应用程序”调试配置来远程调试进程。但是我不确定它是否适用于 GWT 项目。

        【讨论】:

        • 嗨,我一直在尝试各种方法来尝试让 GWT/Maven 在 Eclipse 中工作。至少可以说令人沮丧。我有一个可以运行的小项目,但是在尝试访问 RPC 服务的 servlet 时出现错误。我认为问题在于 web.xml 文件没有从 src/main/webapp/WEB-INF 复制到 /war/WEB-INF 目录。我已经尝试运行 mvn compile 和 mvn gwt:compile 并且这些目标都没有复制资源。执行 gwt:run 时,WEB-INF/lib 目录复制了 jars,但仅此而已。关于为什么 web.xml 不是的任何想法?
        最近更新 更多