无法将项目构面Dynamic Web Module的版本更改为3.0?

我正在使用maven在Eclipse中创build一个dynamicwebapp。 我添加了一些文件夹,如src/test/javasrc/test/resources 。 另外我更改了Java Build Path中的库来获取JavaSE-1.7。 这一切都可以。

当我尝试更改Projects FacetdynamicWeb模块时出了点问题。 我已经在同一个地方将Java更改为1.7。 而且它还告诉我,不能将项目组件的版本dynamicWeb模块更改为3.0。

我已经改变了所有会影响我所想的改变。

我更新了我的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"> <display-name>Servlet 3.0 Web Application</display-name> </web-app> 

然后只是Maven的 – >更新项目…

另一种方法是编辑项目构面configuration文件本身: org.eclipse.wst.common.project.facet.core.xml

将此行中的dynamicWeb模块版本更改为3.0 – <installed facet="jst.web" version="2.5"/>

接着:

  1. 右键单击该项目(在“ 项目浏览器”面板中)。
  2. selectMaven»更新项目 (或按Alt + F5

您将在Eclipse项目的.settings目录中find此文件。

我想我和你有同样的问题。 我的web.xml版本是2.5,而项目有(右键点击Project-> Properties-> Progect Facets-> Dynamic Web Module 2.3)。 虽然我试图将版本从2.3更改为2.5,但ECLIPSE不允许。 解决scheme:我删除了dynamicWeb模块标题下的复选标记,我保存并更新了项目。 自动重新唤醒正在input正确版本的框。 我使用Eclipse开普勒。

希望有用。

PS

看下面Jonathan的评论,非常有用。

我有同样的问题,我甚至试图删除该项目,并再次添加。 诀窍是删除.settings目录。

删除

 .settings .classpatch .projejct target 

并再次导入maven项目。

右键单击项目属性 ; 在Project Facets中 ,取消selectdynamicWeb模块 (版本应为3.1 ),并取消selectJavaServer 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 – > Update项目

什么对我有效:

  1. 将Java更改为1.8 (或1.7)

在您的POM中,您必须在<build>部分中将编译器插件设置为版本1.8(或1.7):

  <build> ... <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.6.0</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> 

确保更改Java Build显示1.8。 如果没有 – 点击编辑并select它应该是。

在这里输入图像说明

  1. 修改web.xml,以便在版本和链接中引用3.0

在这里输入图像说明

  1. 确保您在Project Facets中将Java设置为1.8

在这里输入图像说明

  1. 在这个阶段,我仍然无法改变Dynamic Web Module;

而不是改变它:

a) 取消选中dynamicWeb模块

b) 适用

c) 再次检查。 新版本3.0应该被设置。**

在这里输入图像说明

在申请并再次检查之后:

在这里输入图像说明

希望这可以帮助。

  1. 点击你的项目文件夹。
  2. 转到窗口>显示视图>导航器
  3. 转到导航器并展开.settings文件夹
  4. 打开org.eclipse.wst.common.project.facet.core.xml文件

    <?xml version="1.0" encoding="UTF-8"?> <faceted-project> <fixed facet="wst.jsdt.web"/> <installed facet="jst.web" version="2.3"/> <installed facet="wst.jsdt.web" version="1.0"/> <installed facet="java" version="1.8"/> </faceted-project>

  5. 像这样更改版本<installed facet="jst.web" version="3.1"/>

  6. 保存
  7. 只需更新您的项目。 右键单击项目文件夹> Maven>更新项目>select项目,然后单击“确定”

只是这对我工作。

请打开导航器视图并按照以下步骤操作

  1. (窗口>显示视图>其他>常规),并find您的项目下有一个.settings文件夹,展开它,然后打开文件“org.eclipse.wst.common.project.facet.core.xml”,使下面修改并保存文件。
  2. 将此行中的dynamicWeb模块版本更改为2.5 –
  3. 将此行中的Java版本更改为1.5或更高版本。

从项目结构打开web.xml http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd“version =”3.0“> Servlet 3.0 Web Application

并更新web.xml文件,例如更改版本=“2.5”

从项目.settings文件中更改org.eclipse.wst.common.project.facet.core.xml文件按照步骤1.窗口>显示视图>其他>常规>导航器

  1. 您的项目目录下有一个.settings文件夹

  2. 将此行中的dynamicWeb模块版本更改为2.5 4.将此行中的Java版本更改为1.5或更高版本

现在刷新您的项目,并设置为在您的服务器上运行。

请按照博客的解决schemehttp://scrapillars.blogspot.in/2014/02/how-to-change-project-facet-in-eclipse.html

解决scheme是与图片插图

最好和简单的步骤解决这个问题对我来说是1) 属性 – > 项目方面 – >取消选中/取消选中dynamicWeb模块的checkbox – >应用2)现在更改为所需的版本应用3)检查dynamicWeb模块checkbox.. – 现在你已经完成

他们是解决这个问题的另一种方法(检查一下希望它会帮助你解决你的问题)

问题

无法将项目分面dynamicWeb模块2.3的版本更改为3.0

  1. 转到您的项目位置(例如:D:/ maven / todo)
  2. 去.setting文件夹
  3. 检查这个文件:org.eclipse.wst.common.project.facet.core.xml
  4. 打开文件并将“jst.web”属性从2.3更改为3.0,并保存
  5. 右键单击项目刷新项目并更新maven
  6. 完成!!! ….

在我的情况下,web.xml是由dtd引用的。 在我将其更改为xsd引用之后,就像悉尼发布的引用一样。

web.xml技巧是可行的,因为现在你明确告诉WTP你正在使用特定的servlet版本,而不pipe容器支持什么。

在我的情况下,我使用Maven项目中的注释configuration,我没有一个web.xml文件。 事实certificate,在缺lessweb.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 Webconfiguration文件。 现在事情工作很好。

我有同样的问题,删除.settings文件夹解决了问题

我对这个问题的解决scheme不允许我改变Eclipse(Mars)中的项目方面Dynamic Web Module的版本:

  • 禁用Maven自然
  • 确保web.xml名称空间指向正确的版本
  • 重新启用Maven自然
  • Maven»更新项目(或按Alt + F5)

如果悉尼的回答仍然没有帮助,然后尝试下面。 在悉尼的答案后,转到属性>项目方面取消selectdynamicWeb模块,然后更改版本以匹配您的web.config,然后再次select。 应用>保存然后Maven更新。

web.xml中

 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="Web_App_1" version="3.1"> <display-name>JavaServerFaces</display-name> <!-- Change to "Production" when you are ready to deploy --> <context-param> <param-name>javax.faces.PROJECT_STAGE</param-name> <param-value>Development</param-value> </context-param> <!-- Welcome page --> <welcome-file-list> <welcome-file>jsfs/hello.xhtml</welcome-file> </welcome-file-list> <!-- JSF mapping --> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <!-- Map these files with JSF --> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>jsfs/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.jsf</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.faces</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.xhtml</url-pattern> </servlet-mapping> 

我在这里尝试了很多答案,但是他们都没有为我工作。 然后我在这里find一篇关于我的问题的文章。 我想也是在这里分享。

以下是简要的步骤。

  1. 设置编译器符合性级别。
  2. 更新项目方面
  3. 从首选项更新已安装的JRE
  4. 在pom.xml中添加configuration以使用java 1.7,最后
  5. 从Maven更新项目。

对于maven eclipse Web项目,更改dynamicWeb模块版本需要检查三个地方。 如果使用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构buildpath和编译器版本是1.7

在maven中你仍然有一个错误标记:

 cannot change version of project facet dynamic web module to 3.0 one or more constrants have not been satisfied 

然后,您可以:取消选中dynamicWeb模块,然后重新检查它。 我想这是因为.settings的eclipse文件被破坏了。 关于第二个提示tomcat哪个版本是个不错的提示。

做更新或重新导入项目没有帮助。 @悉尼的答案是对的。 此外,我必须在不同的工作空间中重新创build项目,正如JavaServer Faces 2.2中所述, 需要Dynamic Web Module 2.5或更高版本

我有同样的问题,编辑web.xml以及单独更改.settings文件夹中的文件没有帮助。 我的解决scheme是通过编辑pom.xml直接指向maven编译器插件来使用所需的java版本:

  <build> ... <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> </plugins> </build> 

现在运行Maven-> Update项目,之后可以在properties-> project facets-> Dynamic Web模块版本中更改servlet版本,或者,如前所述,通过手动编辑org.eclipse.wst.common.project.facet.core来更改servlet版本。 xml在项目的.settings文件夹中。

打开org.eclipse.wst.common.project.facet.core.xml文件并将jst.web版本更改为3.0。 还将web.xml更新到版本3.0。 保存并更新项目。 希望这可以帮助。 我正在使用Eclipse Juno

这是pagurix答案的变体,但是使用Eclipse Mars。

将您的web.xml文件更改为web.bak

忽略错误,接下来我们会重新生成它。

进入项目属性 – >项目方面,并将dynamicWeb模块版本设置为您所需要的。 Eclipse现在允许你保存。

现在右键单击该项目。 selectJava EE工具 – >生成部署描述符存根。

这将创build一个具有所需版本的新web.xml。

打开新的web.xml,将XML标题和完整的web-app开始标记复制到原始web.bak,删除新的web.xml,并将web.bak重命名为web.xml。

完成。

我是web.xml中的Web Module 3.0 ,但在properties>Dynamic Web Module它是在3.1

我改变了web.xml到这个:

 <?xml version="1.0" encoding="UTF-8"?> <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_3_0.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> 

在这个变化之后,做: right click on project>Maven>Update Project...

这个问题版本右键单击项目 – >属性 – >项目构面 – >右键单击dynamicWeb模块 – >解锁它 – >取消选中 – >select2.5版本 – >应用 – >更新的Maven

我解决了这个问题, 修改了正确的版本,xsd位置的web.xml修改org.eclipse.wst.common.project.facet.core.xml与正确的版本,做maven更新

更新maven为我工作

select项目,然后按ALT + F5,然后select项目单击确定