我正在使用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。
我已经改变了所有我认为会影响改变的东西。
当前回答
我遇到了同样的问题——我只是从我的工作空间中删除了项目,然后清理了“eclipse文件/文件夹,例如:.project, .settings,等等),然后再次导入maven项目,它工作了。
其他回答
我有同样的问题,删除。settings文件夹解决了这个问题
xml技巧之所以有效,是因为您现在显式地告诉WTP您正在使用特定的servlet版本,而不管容器支持什么。
在我的例子中,我在Maven项目中使用注释配置,并且我没有web.xml文件。事实证明,在没有web.xml的情况下,WTP会查看Maven依赖项来决定使用哪个Servlet版本。在我的例子中,我定义了以下内容:
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
将其更改为6.0解决了这个问题,现在它使用Servlet 3.0而不是3.1,这是JavaEE 7的默认设置。因为我必须从Tomcat 8切换到Tomcat 7,所以Tomcat 7只支持JavaEE 6 Web配置文件。现在一切都很顺利。
进行maven更新或重新导入项目并没有帮助。@Sydney的答案是正确的;此外,我必须在不同的工作空间中重新创建项目,因为JavaServer Faces 2.2需要动态Web模块2.5或更新版本
只是想分享我自己的经验,我发现我的动态Web模块被锁定了,它是通过以下步骤解决的:
第一个
右键单击项目>属性>项目facet >右键单击动态Web模块>解锁>应用并关闭
第二个
右键单击项目> Maven >更新项目> OK
请打开Navigator视图并执行以下步骤
(Window > Show View > Other > General),然后发现在你的项目下有一个。settings文件夹,展开它,然后打开文件“org.eclipse.wst.common.project.facet.core.xml”,做下面的修改并保存文件。 将这一行中的动态web模块版本更改为2.5 - 将这一行中的Java版本更改为1.5或更高版本。