我正在使用maven在Eclipse中创建一个动态web应用程序。我添加了一些文件夹,如src/test/java和src/test/resources。我还更改了Java Build Path中的库,以获得JavaSE-1.7。到这里都没问题。
当我试图改变项目Facet动态Web模块时,出了问题。在同一个地方,我将Java更改为1.7。它仍然告诉我,不能将项目facet动态Web模块的版本更改为3.0。
我已经改变了所有我认为会影响改变的东西。
我正在使用maven在Eclipse中创建一个动态web应用程序。我添加了一些文件夹,如src/test/java和src/test/resources。我还更改了Java Build Path中的库,以获得JavaSE-1.7。到这里都没问题。
当我试图改变项目Facet动态Web模块时,出了问题。在同一个地方,我将Java更改为1.7。它仍然告诉我,不能将项目facet动态Web模块的版本更改为3.0。
我已经改变了所有我认为会影响改变的东西。
当前回答
右键单击项目→属性;在Project Facets中,取消选择Dynamic Web Module(版本应为3.1)和JavaServer Faces(版本应为2.2)。
改变:
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
:
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:javaee="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
然后删除param-name等前面的前缀。
最后,Maven ->更新项目。
其他回答
我想我也有和你一样的问题。我的Web .xml有2.5版本,而项目有(右键单击项目->属性->项目facet ->)动态Web模块2.3。
尽管我试图将版本从2.3更改为2.5,但ECLIPSE不允许。 解决方案:我删除了标题下的复选标记动态Web模块,我保存,我有更新项目。自动重新唤醒是用正确的版本进入框。我用的是Eclipse Kepler。
附注:看看乔纳森下面的评论,非常有用。
对于maven eclipse web项目,更改动态web模块版本需要检查三个地方。如果你使用eclipse,并且在你检查了以下内容之后: 1) web . xml
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
2) maven:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope> ## ensure you have tomcat 7 not other version
</dependency>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<configuration>
<source>1.7</source> ## at least 6
<target>1.7</target>
</configuration>
</plugin>
3) eclipse构建路径和编译器版本为1.7
maven中仍然有一个错误标记:
cannot change version of project facet dynamic web module to 3.0 one or more constrants have not been satisfied
然后你可以: 取消选中动态web模块,并重新检查它。 我认为这是因为.settings的eclipse文件损坏了。关于第二个提示tomcat哪个版本是一个很好的说明。
这是pagurix的答案的一个变体,但使用的是日食火星。
将web.xml文件更改为web.bak
忽略错误,我们接下来将重新生成它。
进入项目属性->项目facet,将动态Web模块版本设置为您需要的版本。Eclipse现在允许您保存。
现在右键单击该项目。选择Java EE工具->生成部署描述符存根。
这将创建一个具有所需版本的新web.xml。
打开新的web.xml,将XML头和完整的web-app打开标记复制到原来的web.bak,删除新的web.xml,并将web.bak重命名为web.xml。
完成了。
我用正确的版本修改了web.xml,xsd位置,用正确的版本修改了org.eclipse.wst.common.project.facet.core.xml,并进行了maven更新,解决了这个问题。
我有同样的问题,我甚至试图删除项目,并再次添加它。诀窍是删除.settings目录。