不能将项目facet动态Web模块版本更改为3.0?

我正在使用maven在Eclipse中创建一个动态web应用程序。我添加了一些文件夹,比如src/test/javasrc/test/resources。我还更改了Java Build Path中的库,以获得JavaSE-1.7。到这里都没问题。

当我试图改变项目Facet动态Web模块时,出了问题。在同一个地方,我将Java更改为1.7。它仍然告诉我,不能将项目facet动态Web模块的版本更改为3.0。

我已经改变了所有我认为会影响改变的东西。

542820 次浏览

我更新了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 ->更新项目…

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

将这一行中的动态web模块版本更改为3.0 - <installed facet="jst.web" version="2.5"/>

然后:

  1. 右键单击项目(在Project Explorer面板中)。
  2. 选择Maven更新项目(或按Alt + F5)

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

在我的例子中,web.xml是由dtd引用的。在我将此更改为xsd引用后,就像悉尼发布的那样,它工作了。

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

请打开Navigator视图并执行以下步骤

  1. (Window > Show View > Other > General),然后发现在你的项目下有一个。settings文件夹,展开它,然后打开文件“org.eclipse.wst.common.project.facet.core.xml”,做下面的修改并保存文件。
  2. 将这一行中的动态web模块版本更改为2.5 -
  3. 将这一行中的Java版本更改为1.5或更高版本。

我想我也有和你一样的问题。我的Web .xml有2.5版本,而项目有(右键单击项目->属性->项目facet ->)动态Web模块2.3。

虽然我试图将版本从2.3更改为2.5,但ECLIPSE不允许。 解决方案:我删除了标题下的复选标记动态Web模块,我保存,我有更新项目。自动重新唤醒是用正确的版本进入框。我用的是Eclipse Kepler。< / p >

附注:看看下面的乔纳森的评论,非常有用。

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配置文件。现在一切都很顺利。

从项目结构中打开web.xml http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd” version = " 3.0 " > Servlet 3.0 Web应用程序

和更新web.xml文件 例如change version = "2.5"

还要从project .settings文件中修改org.eclipse.wst.common.project.facet.core.xml文件 遵循以下步骤 1. 窗口>显示视图>其他>通用>导航器

  1. 在你的项目目录下有一个。settings文件夹

  2. 将这一行中的动态web模块版本修改为2.5 4.将这一行中的Java版本更改为1.5或更高版本

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

请关注博客寻找解决方案 http://scrapillars.blogspot.in/2014/02/how-to-change-project-facet-in-eclipse.html < / p >

解决方案是由图像插图产生的

进行maven更新或重新导入项目并没有帮助。@Sydney的答案是正确的;此外,我必须在JavaServer Faces 2.2需要Dynamic Web Module 2.5或更新版本中所说的不同工作空间中重新创建项目

删除

.settings
.classpatch
.projejct
target

并再次导入maven项目。

我也遇到了同样的问题,编辑web.xml以及更改.settings文件夹中的文件并没有帮助。我的解决方案是直接指向maven编译器插件,通过编辑pom.xml使用所需的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->更新项目,然后您可以在属性->项目facet ->动态Web模块版本中更改servlet版本,或者如前面所写的,通过手动编辑项目的。settings文件夹中的org.eclipse.wst.common.project.facet.core.xml。

右键单击项目属性;在项目方面中,取消选择动态Web模块(版本应该是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 -> 更新项目

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

对于不允许我在Eclipse (Mars)中更改项目facet Dynamic Web Module版本的问题,我的解决方案是:

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

这是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。

完成了。

这个问题与版本右键单击项目->属性->项目Facets->右键单击动态Web模块->解锁它-> uncheck->选择2.5版本->应用->更新maven

我的是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">

在此更改之后,do: right click on project>Maven>Update Project...

如果悉尼的回答仍然没有帮助,那么试试下面的答案。 按照悉尼的答案,去属性>项目facet取消选择动态Web模块,然后改变版本以匹配您的网页。配置,然后再次选择。应用>保存 然后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>

我尝试了这里的许多答案,但没有一个对我有效。 然后我找到了一篇关于我的问题的文章在这里

下面是简单的步骤。

  1. 设置编译器遵从级别。
  2. 更新项目面
  3. 从首选项更新已安装的JRE
  4. 在pom.xml中添加配置以使用java 1.7,最后
  5. 从Maven更新项目。
为我解决这个问题的最好和简单的步骤是 1) 属性 -> 项目方面 ->取消选中/取消标记“动态Web模块 ->应用”复选框 2)现在更改到所需的版本Apply 3)选中动态web模块复选框。 ——现在你是完成——

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

对于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版本是一个很好的注释

他们是解决这个问题的另一种方法(看看它,希望它能帮助你解决你的问题)

问题

不能将项目facet动态web模块2.3版本更改为3.0版本

解决方案

  1. 转到项目位置(例如:- d:/maven/todo)
  2. 进入。setting文件夹
  3. 检查这个文件:org.eclipse.wst.common.project
  4. 打开文件并更改“jst.”属性从2.3到3.0,并保存
  5. 右键单击项目刷新项目并更新maven
  6. 完成了! !

对我有用的是:

  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。如果没有,单击编辑并选择它应该是什么。

enter image description here

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

enter image description here

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

enter image description here

  1. 在这个阶段,我仍然不能改变动态Web模块;

而不是改变它:

a) 取消动态Web模块

b) 应用

c) 再检查一下。应该设置新的3.0版本

enter image description here

应用并再次检查后:

enter image description here

希望这能有所帮助。

  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. Change the version like this <installed facet="jst.web" version="3.1"/>

  6. Save
  7. Just update your project. Right Click on The Project Folder > Maven > Update Project > Select the Project and click 'Ok'

Just this worked to me.

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

更新maven对我有用

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

我有同样的症状,但治疗方法不同。我试图将我的JSF 2.2.4/Spring 3.0 webapp升级到JSF 2.3,以便享受新的JSF websocket钩子,Eclipse(实际上是STS)不会合作。在Eclipse的Project Facets中,JSF 2.3从未可用,直到我按照前面的回答直接编辑了org.eclipse.wst.common.project.facet.core.xml文件——最高的是2.2。

这是我经历过的难关。我不知道这些都是必要的因为我根本不理解这些构型。

在Eclipse中,我经常收到一个可怕的警告,“当一个或多个已安装的facet的实现不可用时,修改一个面项目可能会导致项目损坏。”你确定要继续吗?”这促使我进行更频繁的提交,但没有发生损坏。

  1. 在POM、Eclipse编译器和Eclipse Project Facets中将JDK从1.7升级到1.8。
  2. 更新以下Maven依赖项:

    <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.4</version>
    <scope>provided</scope>
    </dependency>
    

    ... :

    <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>4.0.0</version>
    <scope>provided</scope>
    </dependency>
    

... and ...

    <dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.2.4</version>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.2.4</version>
</dependency>

... :

    <dependency>
<groupId>javax.faces</groupId>
<artifactId>javax.faces-api</artifactId>
<version>2.3</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.faces</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>javax.enterprise</groupId>
<artifactId>cdi-api</artifactId>
<version>2.0</version>
</dependency>

我必须更新我的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">

... :

<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"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">

我不得不更新项目facet ->动态Web模块从2.5到3.0。我尝试了3.1,但出现了错误。

在这个过程中,我经常在这篇文章的标题中得到错误,“无法将项目facet动态Web模块的版本更改为3.0”,Eclipse拒绝编译项目或在项目facet中提供JSF 2.3。当我按照指示编辑org. Eclipse .wst.common. Project .facet. xml文件时,错误消失了,Eclipse在Project Facets中提供JSF 2.3,项目在Tomcat 9.0.8上编译和运行良好。然而,Project Facets仍然警告说:“项目facet jst 2.3版本的实现。找不到JSF。功能将受到限制。”我怀疑这仅仅意味着自动补全和其他Eclipse便利将不可用,因为它无法找到在我的POM中声明的JSF 2.3实现。

希望这能帮助到一些人。谷歌搜索只得到这篇文章由Ali Bassam和间接BalusC帮助。

我遇到了同样的问题——我只是从我的工作空间中删除了项目,然后清理了“eclipse文件/文件夹,例如:.project, .settings,等等),然后再次导入maven项目,它工作了。

当我试图将一个通用的Java项目转换为Maven项目时,我得到了这个错误。

我所做的是确定我的项目所需的Java编译器版本。对于我的项目,最低Java版本是1.8

通过将版本降低到任何低于1.8的版本,我的IDE将开始抱怨它不能识别一堆导入的库,因此我确定我的最低Java版本为1.8

1. Right click your project
2. Go to Properties
3. Left hand-side panel, click "Project Facets"
4. For Java, set the version according to your minimum version

enter image description here

现在,确保Java编译器版本使用与您在Project Facets中设置的相同的Java版本。

1. Right click your project
2. Go to Porperties
3. Left hand-side panel, click "Java Compiler"
4. Make sure Java Compiler version is the same.
5. If it is not the same, change the version. (Uncheck "Use compliance from execution environment' if needed to make the changes.

enter image description here

更改后,错误应该得到解决。如果错误仍然存在,右键单击项目-> Maven ->更新项目

只是想分享我自己的经验,我发现我的动态Web模块被锁定了,它是通过以下步骤解决的:

第一个

  • 右键点击项目>性能比;项目facet >右键单击动态Web模块>解锁比;应用并关闭

第二个

  • 右键点击项目>Maven在更新项目>好吧