新手玩 Maven 经常遇到的一系列问题总汇

本贴最后更新于 3067 天前,其中的信息可能已经事过景迁

说到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,保存即可。

QQ截图20160629144757.jpg

原因

通常情况下这种错误会出现在导入别人的工程时。工程建立时的版本为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>
&lt;!--&nbsp;XXXX&nbsp;--&gt;

</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

所以创建出来就是这个样子了,如果是新建立的工程的话,大可以直接删掉,然后更新一下模板版本,再创建工程。

  • Maven

    Maven 是基于项目对象模型(POM)、通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。

    186 引用 • 318 回帖 • 302 关注
  • Eclipse

    Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。

    75 引用 • 258 回帖 • 617 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...