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

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

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


当前回答

对我有用的是:

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

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

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

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

而不是改变它:

a)取消勾选动态Web模块

b)应用

C)再检查一遍。新版本3.0应该设置。**

应用并再次检查后:

希望这能有所帮助。

其他回答

当我试图将一个普通的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

现在,确保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.

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

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

完成了。

对于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哪个版本是一个很好的说明。

对我有用的是:

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

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

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

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

而不是改变它:

a)取消勾选动态Web模块

b)应用

C)再检查一遍。新版本3.0应该设置。**

应用并再次检查后:

希望这能有所帮助。

从项目结构中打开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. 窗口>显示视图>其他>常规>导航器

在你的项目目录下有一个。settings文件夹 将这一行中的动态web模块版本更改为2.5 4.将这一行中的Java版本更改为1.5或更高版本

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

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

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