我刚刚开始使用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目录?
答案 0 :(得分:4)
描述:web.xml文件不存在
gwt-maven-plugin创建了一个带有'war'打包格式的项目(它是一个Web应用程序,所以这里没有任何反感)。此项目的Web.xml将位于'src / main / webapp'文件夹下,该文件夹将被复制到'war'目录(设置为输出目录),作为maven构建生命周期中“资源”阶段的一部分 - 周期。你应该总是使用
mvn compile gwt:run
或
mvn install gwt:run
以便复制资源,编译所有java文件并调用gwt:compile(因为它自动绑定到'compile'阶段)
[警告]未提供任何启动网址且找不到合理的网址 - 请使用-startupUrl
根据您用作参考的stackoverflow链接,只有您的maven构建文件是使用startupUrl设置的。为了使它在Eclipse中工作,您必须编辑项目的“运行配置”,并将“-statupUrl”命令行参数添加到“Arguments”面板中的现有参数中。
但是,这只是一个警告,它不应该阻止你从eclipse运行你的GWT应用程序。如果您在此处遇到相同的“web.xml”问题,可能是因为在调用“作为Web应用程序运行”之前,您没有在IDE中编译项目。我建议您为此项目禁用“自动构建”选项,并始终手动构建它并调用“GWT Compile”,然后尝试“作为Web应用程序运行”
编辑:与上述相关,是否可以调试由gwt启动的开发模式下运行的GWT应用程序:compile gwt:run?
通常,您必须使用“远程应用程序”调试配置来远程调试进程。但是我不确定它是否适用于GWT项目。
答案 1 :(得分:0)
我也给了我这个警告:
时没有提供启动网址且找不到合理的网址
在该屏幕截图中,没有“生成示例代码”复选框。在我的IDE(sdk 2.5)中,它是,所以我没有选中......
我没有创建任何server
和client
个包,我手动创建了client
,如教程所需。直到该步骤的教程没有说我必须有一个server
包。项目中缺少这个和他的配置。
答案 2 :(得分:0)
如果右键单击项目并转到属性 - > Google - > Web应用程序,您的WAR目录可能类似于war
或src/main/webapp/WEB-INF/classes
。
将其更改为src/main/webapp
。
同时取消选中“从此目录启动和分发...”旁边的框
这就是为我解决这个问题的原因。它还同时修复了“找不到gwt-servlet.jar”的问题。