平时工作中经常项目倒腾来倒腾去的,一个项目在公司电脑上没点事,拿到自己的电脑上就一堆的错,这种情况在MAVNE项目上尤为严重。现在记录一些自己移植项目遇到的常见的错误,与解决方案。以自己写的单点登录项目为例。在家里用自己的电脑把在公司的时候上传的单点登录项目Demo下载下来,默认是装好MAVEN了的,如果没装,没必要继续看下去了。
直接在eclipse里面导入maven项目。导入完后你会发现报一大堆错。如下图所示。
初略的瞄一下,主要为六个错误。都是因果关系。解决主要的错误其余的就全解决了。
1、Cannot change version of project facet Dynamic Web Module to 3.0.
2、JavaServer Faces 2.2 can not be installed : One or more constraints have not been satisfied.
3、JavaServer Faces 2.2 requires Dynamic Web Module 2.5 or newer.
4、JAX-RS (REST Web Services) 2.0 can not be installed : One or more constraints have not been satisfied.
5、JAX-RS (REST Web Services) 2.0 requires Java 1.6 or newer.
6、One or more constraints have not been satisfied.
其实用久了话发现大部分错误都很熟悉。
Cannot change version of project facet Dynamic Web Module to 3.0.
大概意思是没法改变项目的web模块的版本到3.0,因为你现在项目的web版本并不是3.0的,但是你在web.xml里面设置的是3.0。你可以打开你项目的web.xml进行检测。如下图
然后,项目右键->Propreties->Maven->Project Facets 你会看到如下页面。能看到当前项目的web版本和jdk版本。
我们需要的就是把 2.3给改成3.0或者改web.xml里面的配置。对于一个已经写好的项目来说,一般来说是改当前项目的project Facets的配置而不是web.xml里面的配置,因为web.xml的更改可能导致出现其他问题。
大部分时候,如果你直接在上面的界面改版本号的话会发现无法应用,会提示错误。如下图
所以只能用一种简单粗暴的方式来改了。
找到当前项目的.settings文件夹,更改以下三个文件。如下图
org.eclipse.jdt.core.prefs 修改如下(不同的web版对jdk版本有限制)
org.eclipse.wst.common.component 修改如下
org.eclipse.wst.common.project.facet.core.xml 修改如下
我这儿是jdk改成了1.8,动态web版本改成3.0的。这一系列改完在打开project Facets如下图,此时已经改完了。
然后 右键项目 > Maven > Update Project。这个时候会发现报错的少了很多,而且出现了不一样的。如下图。
Dynamic Web Module 3.0 requires Java 1.6 or newer. 这个错是指使用动态web模块3.0的话至少需要的jdk版本是1.6或者以上的版本。
首先是确认当前项目的jdk版本,可以右键项目->Build Path->Configure Build Path,按下图顺序设置jdk版本,需要与前面里面设置的Project Facets设置的一样。
最后在pom.xml里面添加下面的代码限定jdk版本,需要与前面设置的一样。
jdk-1.8
true
1.8
1.8
1.8
1.8
然后 右键项目 > Maven > Update Project 这时所有的错误就全部解决完了,如下图。