Maven安装及使用中的常见问题

环境:win7  +    eclipse mars版本

一、安装maven

1、安装maven插件

  1)、下载maven并解压到指定目录,到该目录下复制当前路径path

  2)、在eclipse的dropins目录下编辑maven.link,将maven所在的path填写进去:

path=D:/Program Files/DevTools/apache-maven-3.3.9

  然后启动eclipse,在Window-->Prefrence窗口看到Maven的选项说明maven插件安装成功。

  

2、使用maven自定义的repository仓库

  1)、到maven软件包的conf目录下,编辑settings.xml,填写repository的路径:

       

  2)、到eclipse中修改默认的maven repository目录

    

  保存退出

  3)、启用maven软件包里的settings.xml

     

  然后Update Settings

二、maven常见问题

1、pom.xml报错:

    

同时打开pom.xml有类似如下提示:

    

解决:

  在项目上右击--->Maven---->Update Project--->选择出现错误的项目,然后在下方选中强制更新选项,单击OK即可。

    

三、Maven依赖常见问题

1、缺少依赖

  现象:添加部分Maven依赖后,开发过程中代码正常编译,运行时提示缺少依赖

  原因:这是因为由于各种原因,Maven没有下载全部所需要的对应依赖造成的

  解决方案:按照提示添加相关依赖即可。

示例:在某个项目中,运行时,提示如下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: kafka/api/OffsetRequest
    at storm.kafka.KafkaConfig.<init>(KafkaConfig.java:43)
    at storm.kafka.SpoutConfig.<init>(SpoutConfig.java:32)
    at cn.crxy.storm_project5.LogProcessTopology.main(LogProcessTopology.java:27)
Caused by: java.lang.ClassNotFoundException: kafka.api.OffsetRequest
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)

  根据标示的提示信息,可知缺少kafka依赖,添加即可。(在网址:mvnrepository.com上,搜索kafka依赖,添加)

2、依赖冲突(依赖包中子依赖重复)

  现象:在开发过程中,代码编译正常,运行时提示在class path中出现两个类似的依赖包

  分析:依赖a-1在A中出现,依赖a-2在B中出现(A和B为项目的依赖,a-1和a-2为对应的子依赖,它们功能相同,只是版本等有所差异),系统不知道引用哪个子依赖项,所以出现此错误。

  解决方案:在依赖中过滤掉多余的子依赖即可

示例:某次运行代码时,提示如下错误:

Detected both log4j-over-slf4j.jar AND slf4j-log4j12.jar on the class path
    java.lang.NoClassDefFoundError: Could not initialize class org.apache.log4j.Log4jLoggerFactory
    at org.apache.log4j.Logger.getLogger(Logger.java:39) ~[log4j-over-slf4j-1.6.6.jar:1.6.6]

解决:在依赖中进行过滤,示意:

        <!-- 因为storm中有logback的实现,kafka中有log4j的实现,需要把kafka中的log4j过滤掉 -->
        <dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka_2.11</artifactId>
            <version>0.8.2.2</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>        <!--如果需要过滤多个,添加多个exclusion即可 -->
            </exclusions>
        </dependency>

3、依赖冲突(代码和运行环境中依赖重复)

  现象:开发好的软件包在测试服务器上运行时,提示依赖包冲突

  原因:默认打包的时候,所包含的依赖包中已经有依赖A,而线上跑的集群中也有对应的依赖A,二者冲突造成此错误

  解决:设置自己开发的依赖包的作用范围(级别),使其在开发编译时有效,打包时无效

示例:

		<!-- 这个依赖编译时需要,运行时就不需要了,因为storm集群里面已经包含 -->
		<dependency>
			<groupId>org.apache.storm</groupId>
			<artifactId>storm-core</artifactId>
			<version>0.9.3</version>
			<scope>provided</scope>
		</dependency>

4、一次性设置jdk的编译级别和运行级别为1.7(推荐)

  在项目组开发过程中,开发工具eclipse默认的jdk编译和运行级别都是jdk1.5的,在开发过程中会造成很多问题,一个典型的例子时jdk1.5不支持注解,而在1.7版本可用。

因此需要强制指定编译和运行级别。一种推荐的解决方案为在pom.xml中指定:

    <build>
        <plugins>
            <!-- compiler插件, 设定JDK版本 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.7</source> <!-- 源代码使用的开发版本 -->
                    <target>1.7</target> <!-- 需要生成的目标class文件的编译版本 -->
                    <!-- 一般而言,target与source是保持一致的,但是,有时候为了让程序能在其他版本的jdk中运行(对于低版本目标jdk,源代码中需要没有使用低版本jdk中不支持的语法),会存在target不同于source的情况 -->
                </configuration>
            </plugin>
        </plugins>
    </build>

  另外一种可采用的方案是在项目上右击,在Properties面板中上指定,这种方法在更新项目后,会重新恢复默认的1.5版本,所以不推荐。

 

时间: 2024-08-06 08:55:46

Maven安装及使用中的常见问题的相关文章

linux eclipse3.6.1 maven安装

linux maven安装及 eclipse maven插件安装,有需要的朋友可以参考下. maven的安装(apache-maven-3.0.5为例): a.官网地址:http://maven.apache.org/,下载完成之后将其解压到usr/local/目录下 b.配置 maven 环境变量,修改/etc/profile: export M2_HOME=/usr/local/apache-maven-3.0.5 export PATH=$PATH:$M2_HOME/bin c.命令窗口,

maven安装与配置(windows系统)

Maven是一个项目管理和综合工具.Maven提供了开发人员构建一个完整的生命周期框架.开发团队可以自动完成项目的基础工具建设,Maven使用标准的目录结构和默认构建生命周期.概括地说,Maven简化和标准化项目建设过程.处理编译,分配,文档,团队协作和其他任务的无缝连接.Maven增加可重用性并负责建立相关的任务. 1.安装配置JDK 2.下载安装包 到官网http://maven.apache.org/download.cgi下载maven压缩包,如图 解压到指定文件夹.如:D:\apach

Maven安装及与Eclipse集成

1.  安装 Maven不需要作为服务组件安装到Windows上,仅仅需要下载.解压.配置一下环境变量即可. 1.1  JDK和JAVA_HOME 在安装Maven之前,首先要确认你已经正确安装了JDK.Maven可以运行在JDK1.4及以上的版本上.运行命令[echo % java_home % ]检查环境变量JAVA_HOME是否指向了正确的JDK目录:然后,运行命令[java -version]检查jdk版本是否在1.4及以上版本. 1.2  下载Maven 下载Maven3.X(例如Ma

redhat 6.4 maven安装

Redhat 6.4 安装maven 1.Maven 的安装需要JDK环境,所以首先需要确定JDK环境,可以在终端使用java -version [[email protected] local]# java -version java version "1.7.0_09-icedtea" OpenJDK Runtime Environment (rhel-2.3.4.1.el6_3-x86_64) OpenJDK 64-Bit Server VM (build 23.2-b09, m

ST 单元测试之maven安装

junit是用于单元测试的jar包,可以直接下载然后粘贴至lib目录,maven是专门的包管理工具,所以尝试安装maven. 安装maven之前需要先安装好java以及eclipse,在相应的官网下载安装之后需要一系列的路径配置问题. 1.jdk安装 首先从官网下载jdk(最好下载最新版本的,新版的eclipse要求1.8的java,之前的java版本太低,不能安装eclipse)http://www.oracle.com/technetwork/java/javase/downloads/jd

maven安装和配置

一.下载maven maven下载页 里面有一些版本区别,binary比较小,适合直接在项目中使用,source带了源代码,windows系统下载zip后缀的 apache-maven-3.3.9-bin.zip 8.22M 是绿色的,解压到相应目录就行 二.配置环境变量 1.增加"M2_HOME",内容是maven的路径(我的是"D:\Java\maven") 2.编辑"path",在原有内容后面增加"%M2_HOME%\bin;&q

Windows环境下maven 安装与环境变量配置

Maven是一个项目管理的Java 工具,在JavaEE中,我们可以使用Maven方便地管理团队合作的项目,现在我们在学习JavaEE框架,使用Maven可以管理类库,有效方便地供团队中的其他人员使用. 一.下载 Maven . 请访问Maven的下载页面:http://maven.apache.org/download.html,其中包含针对不同平台的各种版本的Maven下载文件. 注意: 我这里下载的是:apache-maven-3.3.9-bin.zip 版本. 二.解压 maven 压缩

OS X maven安装

软件环境:OS X EI Capitan 10.11 1.去maven官方网站下载最新包 http://maven.apache.org/download.cgi 我保存在了 /Users/qiguang/Downloads/apache-maven-3.3.9-bin.tar.gz 我下载的是3.3.9的版本. 2.解压安装包及MAVEN_HOME和PATH配置 打开终端(opition+space搜终端) 进入到文件夹下cd /Users/qiguang/Downloads 执行tar命令解

Maven安装、集成

安装Maven 1.在安装Maven前,确保jdk版本在1.6及以上,并配置好jdk环境变量. 2.下载Maven:http://maven.apache.org/download.html  下载apache-maven-3.3.1.zip解压至F:\Work\Maven\apache-maven-3.3.1即可(绿色). 3.配置Maven环境变量: a.新建M2_HOME,值为Maven安装目录:F:\Work\Maven\apache-maven-3.3.1 b.Path:在path值后