哈喽,这期博客我们来讲讲如何 解决“Dynamic Web Module 3.0 requires Java 1.6 or newer.” 而不影响tomcat
最近在做项目的时候,遇到了这个问题,跟大家分享下
(博主的环境是jdk1.8 maven 3.5.2 tomcat 8.0 ecplise 2017 java ee)
在做项目时,看到项目上一个鲜红的叉叉,顿时一顿头大,查了下资料,发现这个问题是
当你用maven创建项目时,默认的jdk版本是1.5,这个你可以在eclipse 的Navigator视图里,找到当前项目的.classpath里查看
这个视图如果你的eclipse没有的话, 你可以自己搞出来(Windows-- Show View -- Others)
然后,我们来看看.classpath 的maven 默认jdk版本
我这里显示的jdk1.8是我自己改过的,你们的应该是默认的jdk1.5
所以当你引入jdk 1.5以上的依赖包时,就会显示这个错误
首先提供网络资料上大部分都会说的解决方案
在报这个错的那个maven项目的pom.xml 里加上下面的依赖
<build>
<plugins>
<!-- 引入这个包解决Dynamic Web Module 3.0 requires Java 1.6 or newer -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
但是!但是!但是
加入了这个依赖,你就不能在eclipse里 run as xxx.jsp 页面了,再也不能愉快的快速编译看到预期结果了
因为当你按之前操作那样run as xxx.jsp时,你的tomcat8.0 会报错(博主这里试过tomcat7.0虽然会打印错误日志,但是还是能愉快的编译的),从而无法编译
至于为什么加上上面说的依赖包,tomcat 8.0 会报错,这个问题博主也不清楚,欢迎来讨论
但是有没有其他办法能做到修改maven的默认jdk版本呢?不用上面的方法,答案是有的
这就是我们直接去修改maven 的conf -- settings.xml
我们去添加以下的配置(在<profiles></profiles>标签里)
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
这样后(博主默认你的eclipse是引用这份settings.xml设置的),我们就能发现eclipse里的全部maven项目里的jdk版本都变成1.8了,
那个错误也消失了,也不会触发tomcat8.0 罢工的问题,可喜可贺啊
好啦,这期博客到这里了,溜了