说到Maven,之前用过一段时间,后来去了一个坑爹的外包公司后,就没有再用过Maven了。
现在重操Maven没有那么熟练了,便发现了许多小问题。尽管不影响实际操作,但是或多或少都会影响你的心情。(想想一个项目中蹦出一个小红叉叉,却又感到莫名其妙的时候)
下面是我遇到的几个小问题,顺便给出解决方案,方便新接触Maven的朋友参考。
今天下载了新的JDK:jdk_8u91-x86_64(没错,7都用了这么久了,是时候跟上科技的脚步了)
另外,为了给自己一个愉快的开始,我换了IDE:eclipse-jee-neon-R-win32-x86_64
还有一个tomcat8
解决Failure to find ***
这个完整的错误应该是类似这样的
Failure to find org.apache.maven.plugins:maven-compiler-plugin:jar:3.0 in http://maven.oschina.net/content/groups/public/ was cached in the local repository, resolution will not be reattempted until the update interval of nexus-osc has elapsed or updates
意思就是说maven.oschina.net这个仓库镜像上找不到3.0版本的maven-compiler-plugin.jar
解决方案
打开%MAVEN_HOME%\conf\settings.xml,搜索<mirrors>节点,把这个节点的代码全部注释掉即可。
原因
使用第三方的maven仓库出现这种情况很正常,注释掉后默认使用的就是maven的真正中央仓库了,该有的东西绝对有,如果觉得慢的话,可以用一下代理软件。
解决Java compiler level does ***
这个完成的错误提示应该是这样的
Java compiler level does not match the version of the installed Java project facet.
说的是你的项目所使用的JDK版本与当前eclipse所使用的编译器不一致。
解决方案
右键工程->Properties->Project Facets
选择对应的Java版本,我之前是1.7,我把它更改为1.8,保存即可。
原因
通常情况下这种错误会出现在导入别人的工程时。工程建立时的版本为1.7或其他,现在eclipse所使用的jdk版本发生变化所导致的。
恰巧我就遇上了,上面说我把JDK换成了1.8,所以当我导入我之前的项目时,便遇到了这个错误。
解决Cannot change version of ***
这个完整的提示大概应该是这样的
Cannot change version of project facet Dynamic web module to 3.0
大概说的就是你不能使用WEB3.0版本的JEE工程。而你的web.xml的version却是使用的3.0
解决方案
1、确保web.xml的version为3.0
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <display-name>Archetype Created Web Application</display-name><!-- XXXX -->
</web-app>
2、修改项目的设置,在 Navigator 下打开项目.settings 目录下的 org.eclipse.jdt.core.prefs
修改下面中的 1.7 为 1.8
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.source=1.8
3、打开 org.eclipse.wst.common.project.facet.core.xml,将 1.7 改为 1.8
并且将 jst.web 的版本改为 3.0
<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
<fixed facet="wst.jsdt.web"/>
<installed facet="jst.web" version="3.0"/>
<installed facet="wst.jsdt.web" version="1.0"/>
<installed facet="java" version="1.8"/>
</faceted-project>
4、右键工程->Maven->Update Preject,完成!
原因
这是 Maven 创建 WebApp 时,模板版本过老的原因。因为我创建 WebApp 是,使用的是 maven-artchetype-webapp v0.1,创建出来 Servlet 版本还是 2.3
所以创建出来就是这个样子了,如果是新建立的工程的话,大可以直接删掉,然后更新一下模板版本,再创建工程。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于