首页 > 技术文章 > Cannot change version of project facet Dynamic Web Module to 3.1

panie2015 2016-08-25 11:55 原文

最近项目一直报错,看的极度的不爽,于是找了很长时间的解决方案。

先说一下环境Spring + SpringMVC + MAVEN + jdk 1.8 + servlet 3.1 

由于是web 项目,这里选用了 servlet 3.1 的jar 包,在pom 中引入

<properties>
	<standard.version>1.1.2</standard.version>
	<jstl.version>1.2</jstl.version>
	<servlet-api.verison>3.1.0</servlet-api.verison>
	<jsp-api.version>2.2</jsp-api.version>
</properties>
<dependencies>
	<dependency>
		<groupId>taglibs</groupId>
		<artifactId>standard</artifactId>
		<version>${standard.version}</version>
		<type>jar</type>
	</dependency>
	<dependency>
		<groupId>javax.servlet</groupId>
		<artifactId>jstl</artifactId>
		<version>${jstl.version}</version>
		<type>jar</type>
	</dependency>
	<dependency>
		<groupId>javax.servlet</groupId>
		<artifactId>javax.servlet-api</artifactId>
		<version>${servlet-api.verison}</version>
		<scope>provided</scope>
	</dependency>
	<dependency>
		<groupId>javax.servlet.jsp</groupId>
		<artifactId>jsp-api</artifactId>
		<version>${jsp-api.version}</version>
		<scope>provided</scope>
	</dependency>
</dependencies>

  

而 web.xml 的头文件也要改为3.1(可以照着 tomcat8 的web.xml 复制这段头文件)

<web-app 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"
	version="3.1">

 

方法一(推荐):

为了Maven 的编译环境和所设置的jdk 是一致的,在pom 中添加一个编译插件

<build>
		<plugins>
			<!-- Compiler 插件, 设定JDK版本 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.1</version>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
					<showWarnings>true</showWarnings>
				</configuration>
			</plugin>
		</plugins>
                ……

</build>

  

全部都设置好了之后

在项目中删除下面的文件(只保留 src 和pom.xml),重新导入 maven project

.settings .classpatch .projejct  target

 

如此设置之后,项目就不会报错了。

 

方法二:

当然,如果没有使用这个maven插件,要去除这个错误的方法就是:

1)手动设置 jdk 编译版本为1.8

 

2)设置 java build path 的jre 为jdk 1.8

 

3)使用Navigator视图查看.setting 文件夹下的org.eclipse.wst.common.project.facet.core.xml 改成如下值

如此这般也可以解决这个问题(但是没有上面那个简单快捷,而且偶尔还是可能设置出错)

推荐阅读