8

我的gae + spring + maven项目完美运行。但我无法使用eclipse使其工作。

当我使用 Eclipse 中的 GAE 运行我的项目时(使用 Google Plugin,Run As > Web Application) ,似乎pom.xml中声明的spring-web依赖项正在从WEB-INF/lib中消失。所以没有spring-web这是一个例外:

Could not instantiate listener org.springframework.web.context.ContextLoaderListener
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

(此处为完整的 GAE 堆栈跟踪)

从控制台运行mvn clean package gae:run,该应用程序就像一个魅力一样工作,并且spring-web按预期放置在WEB-INF/lib 目录下。

刚刚在 BitBucket 上发布了我的测试项目:https ://bitbucket.org/jelies/gae-spring-maven

知道为什么从 Eclipse 启动 webapp 时spring-web没有发布到WEB-INF/lib吗?


使用:

  • SpringSource ToolSuite 3.1.0(基于eclipse 3.8)
  • 爪哇 6
  • 春天 3.2.1
  • Maven 3.0.4
  • 谷歌应用引擎 1.7.5
  • maven-gae-插件 0.9.6

更新: 使用 spring 版本3.1.4.RELEASE时, spring-web依赖项正在发布到WEB-INF/lib。任何 3.2.X 版本都不会发生这种情况。

4

4 回答 4

2

为我的配置(Eclipse 4.2、WAS 7.0、mvn 3)添加了一个 Jira 问题:https ://jira.springsource.org/browse/SPR-10494

于 2013-04-26T06:47:18.820 回答
1

如果您的 .classpath 文件有条目<classpathentry kind="output" path="target/classes"/>,请尝试将其更改为您的 WEB-INF/classes 目录。我的设置是 maven 标准,所以我把这条线改成了<classpathentry kind="output" path="src/main/webapp/WEB-INF/classes"/>. 这刚刚解决了我的问题(Eclipse Juno,WAS 7,没有安装 m2e)。

此外,如果它适用于其他人,我应该提到,对于我的服务器(Websphere),我选择“使用工作区中的资源运行服务器”发布设置。

这个问题表明我真的不了解 Eclipse 的发布,但在此之前,当我选择“工作区中”设置时,它实际上将我的资源发布到 \workspace.metadata.plugins\org.eclipse.wst.server.core \tmp0 和 WEB-INF\lib 不包含 spring-web。但是,通过上述更改,我不再看到我的代码发布到该目录。我现在不确定我的服务器如何获取它需要的二进制文件,但它似乎正在工作。

作为旁注/额外的好处(可能完全不相关),当我对 JSP 进行更改时,我不再需要发布来查看对 JSP 的更新。

于 2013-10-02T16:35:34.500 回答
1

这为我修复了它:

  1. 找到包含在您的 Web 应用程序中的 spring-web.jar 的位置。在我的情况下,它在 user.m2\repository\org\springframework\spring-web\4.1.6.RELEASE\spring-web-4.1.6.RELEASE.jar
  2. 打开 spring-web-4.1.6.RELEASE.jar en 例如。7zip
  3. 从 jar 中删除此文件:META-INF\web-fragment.xml(在 7zip 中右键单击文件 -> 删除)
  4. 关闭 7zip 并在 Eclipse 中的服务器上运行“发布”

更多信息:https ://jira.spring.io/browse/SPR-10494?focusedCommentId=94572&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-94572

于 2015-07-09T16:50:36.247 回答
0

毫无疑问,带有 eclipse 和 maven 的 spring 3.2.x 不起作用;从 Google Eclipse 插件启动应用程序时,spring-web未将其发布到WEB-INF/lib 。

尝试使用 Spring 3.2.1 和 3.2.2。它只适用于使用较低版本的我(现在我使用的是 3.1.4)。

于 2013-03-17T12:34:29.700 回答