0

我一直在使用GWTMaven,但是无论我尝试做什么,Eclipse 都不想将源代码自动编译到通常的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 配置都无法做到这一点。

  • 这可能是 Maven 特有的吗?
  • 我可能忘记在 Eclipse 中配置什么?
  • 任何有类似问题的人,并找到了如何解决它们?

旁注:使用 Eclipse 的默认 Sonatype Maven 插件。还尝试使用 webAppCreator 工具重新初始化 Maven 项目,但它没有改变结果。使用提供的默认运行配置。webapp/WEB-INF/lib 自动包含所需的库。

4

1 回答 1

1

Maven 通常编译成target/classes. 当您使用 Maven 构建 WAR 时,Maven 将从那里复制类,以便它们最终在 WAR 中的正确位置。

所以问题是:“运行项目”是什么意思?通常,这意味着构建一个 WAR 并部署它。如果你这样做,一切都应该工作。

我的猜测是你想避免这种努力,因为它需要很长时间。但是除非您具体告诉我们您是如何设置项目以及如何“运行”它(您使用哪个容器、使用哪些插件等),否则您将无法提供帮助。

[编辑]您的主要问题可能是如何将类路径移交给 Jetty,以及它是尊重它还是构建它自己的。

您可能想查看GWT Maven 插件,它说“由于 M2Eclipse 和 Google Eclipse 插件,可以很好地集成到 Eclipse 中”。

博客文章也可能对您有所帮助。

于 2011-07-06T15:05:50.937 回答