我一直在使用 GWT 和 Maven ,但无论我尝试做什么,Eclipse都不希望将源代码编译为通常的 < em> webapp / WEB-INF / classes 文件夹自动生成。我尝试使用GWT-Platform中的 gwtp-sample-basic 样本重现问题;可以在这里找到: gwtp-samples-0.6.zip
在没有类的情况下通过Jetty部署和运行项目会导致以下预期错误:
[WARN] Could not instantiate listener example.project.server.MyGuiceServletContextListener
java.lang.ClassNotFoundException: example.project.server.MyGuiceServletContextListener
...
[WARN] EXCEPTION
java.lang.ClassNotFoundException: com.google.inject.servlet.GuiceFilter
...
[WARN] failed guiceFilter: javax.servlet.UnavailableException: com.google.inject.servlet.GuiceFilter
...
[WARN] Failed startup of context com.google.apphosting.utils.jetty.DevAppEngineWebAppContext@aec7ab1{/,/home/user/Documents/Workspace/project/src/main/webapp}
javax.servlet.UnavailableException: com.google.inject.servlet.GuiceFilter
...
使用Ant,这些类可以构建到正确的文件夹 webapp / WEB-INF / classes ,但是对于我尝试过的任何Maven配置都没有这样做。
旁注:使用Eclipse的默认Sonatype Maven插件。还尝试使用webAppCreator工具重新初始化Maven项目,但它没有改变结果。使用提供的默认运行配置。 webapp / WEB-INF / lib自动包含所需的库。
答案 0 :(得分:1)
Maven通常会编译成target/classes
。当您使用Maven构建WAR时,Maven将从那里复制类,以便它们最终位于WAR中的正确位置。
所以问题是:“运行项目”是什么意思?通常,这意味着构建WAR并部署它。如果你这样做,一切都应该有效。
我的猜测是你要避免这种努力,因为它需要相当长的时间。但除非你具体告诉我们你如何设置你的项目以及你如何“运行”它(你使用哪个容器,你使用哪些插件),这是不可能的。
[编辑] 您的主要问题可能是类路径如何移交给Jetty以及它是否尊重它或构建自己的。
您可能希望查看GWT Maven Plugin,其中“将nicelly整合到Eclipse中,感谢M2Eclipse和Google Eclipse插件。”
this blog post也可以帮到你。