最近项目一直报错,看的极度的不爽,于是找了很长时间的解决方案。
先说一下环境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 改成如下值
如此这般也可以解决这个问题(但是没有上面那个简单快捷,而且偶尔还是可能设置出错)