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

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

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


当前回答

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

问题

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

解决方案

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

其他回答

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

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

对我有用的是:

将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以及更改.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。

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

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

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