我有一个使用 Spring MVC 框架和 Maven 作为其构建系统的Java项目。我希望使用的主要IDE是 Eclipse for Java EE 。我正在为我的应用程序使用标准的Maven项目结构:源代码位于src/main/java,应用程序资源位于,src/main/resources并且Web容器相关的代码位于src/main/webapp。在中src/main/webapp/WEB- INF,我有一个web.xml用于配置服务器的文件和多个与Spring相关的文件(例如上下文XML文件和视图)的文件夹。这些Spring文件在web.xml中合法链接。
src/main/java
src/main/resources
src/main/webapp
src/main/webapp/WEB- INF
web.xml
当我尝试使用 Maven-Tomcat7-Plugin 运行该项目时(通过mvn tomcat7:run- war目标),我的项目成功启动,并且能够查看我的网页并看到我的REST控制器在运行中没有问题。
mvn tomcat7:run- war
但是,当我尝试使用Eclipse的Run As Server选项在Eclipse中运行该项目时,它永远不会起作用,我也不知道为什么不这样做。我不断收到一个错误对话框,标题为“ 服务器错误” ,并显示消息 “选择不能在任何服务器上运行”。 我已经在Eclipse中合法配置了 Tomcat 7 服务器运行时;对于其他Java项目,我可以毫无问题地使用此运行时。我已经尝试了Google,Stackoverflow和博客建议的所有方法,以使Eclipse Maven Spring项目在Eclipse服务器上工作。我试图删除Eclipse项目,删除Eclipse工作区文件并重新导入该项目(既作为Maven项目又作为常规Java项目),但无济于事。我也尝试过在 Project Facets 并将Web目录设置为src/main/webapp,但也无济于事。
Run As Server
我很困惑;我以前在Eclipse中使用过Tomcat服务器很多次,但是 即使 它使用Maven在Tomcat上部署得很好,它也不能在特定的Spring项目中使用。有谁知道怎么了?我忘了排错步骤了吗?我的项目设置是否与Eclipse对Web Server项目的期望有冲突?提前致谢。
我想我知道了。Eclipse的动态Web模块版本3.1中可能存在错误。正在使用此版本导入我的项目,因为我在pom.xml中使用了javax.servlet- api的3.1版。当我将版本更改为版本3.0时,现在可以将其作为服务器运行。
基本上,要进行此更改,我必须进入.settings/org.eclipse.wst.common.project.facet.core.xml并将<installed facet="jst.web" version="3.1"/>标记更改为<installed facet="jst.web" version="3.0"/>。
.settings/org.eclipse.wst.common.project.facet.core.xml
<installed facet="jst.web" version="3.1"/>
<installed facet="jst.web" version="3.0"/>
是时候向Eclipse提交错误了……