我从另一家公司继承了一款Java web应用。我正在尝试将其加载到Eclipse中(通过Import Maven项目),但得到一个错误消息:“无法将项目方面动态Web模块的版本更改为2.5”。
我仔细研究了一下,发现web.xml文件的开头是
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">并且pom.xml指定了
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>但是.settings文件夹包含一个包含以下内容的文件
<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
<fixed facet="wst.jsdt.web"/>
<installed facet="java" version="1.6"/>
<installed facet="jst.web" version="3.0"/>
<installed facet="wst.jsdt.web" version="1.0"/>
</faceted-project>我怀疑这里指定的3.0与其他地方指定的2.5冲突。这可能是真的吗?这种设置组合有没有可能不会导致错误?( Eclipse的旧版本,例如?)
发布于 2015-01-20 06:57:08
简短版本
试试这个:
长版本
在学习一些eclipse动态web/spring的东西时,我已经遇到过很多次这个问题,没有其他解决方案可靠地解决我的问题,也没有帮助我理解是什么导致了这个问题。我想我已经开始明白了。
因此,当您运行Maven ->更新项目时,m2e (我假设)正在将Dynamic Web Module添加到项目方面。添加是这里的关键词。因此,当我进入并将web.xml从...“version="2.3">更新到...”version="2.5">
我收到错误消息“无法将项目方面动态Web模块的版本更改为2.5”。
当我尝试的时候,3.0也是如此。
看起来m2e能够将其添加到您的项目中,但就像错误所说的那样,一旦设置好,它就无法更改它。因此,只需在项目方面页面中取消选择它。点击to保存您的首选项并再次运行Maven Update。

如果您添加了服务器(如tomcat)方面,则不需要在pom.xml中包含javax.servlet。

发布于 2015-07-13 10:34:45
请参阅Cannot change version of project facet Dynamic Web Module to 3.0?
关闭项目,直接更新项目.settings文件夹下的'org.eclipse.wst.common.project.facet.core.xml‘文件。
发布于 2014-08-29 03:38:36
我的猜测是,最初的作者在初始导入之后手动更改了Eclipse项目的项目方面,并且在那之后再也没有运行过Maven | Update。
无论如何,对于Maven项目,最好不要将任何Eclipse元数据(即.classpath, .project, .settings/)提交给SCM,而是让m2e在导入时生成它们。
因此,我建议复制您的项目结构,从副本中删除所有Eclipse元数据,然后通过m2e导入。
如果在导入时仍然有任何错误,那么至少你可以得到一个提示,在哪里原始作者调整了默认值,这样你就知道从哪里开始清理了。
https://stackoverflow.com/questions/25551213
复制相似问题