`

Eclipse中maven项目添加依赖

 
阅读更多

1.在Eclipse中创建Eclipse项目后如何添加jar包?

点击pom.xml文件.我们可以看到下面有7个标签。



各个标签的含义如下:

Overview:显示maven项目的一些基本信息
Dependencies:添加jar包的页面
Plugins:添加maven插件的页面.比如tomcat-maven-plugin等
Dependency Hierarchy:用于显示jar包的依赖关系.没事的时候可以看看jar包的依赖关系
Effective POM:显示maven的编译路径,plugin之类的.也可以无视
pom.xml:导入jar包的信息,可以在其中进行修改

现在添加jar包:
点击Dependencies标签页
点击Dependencies中的add按钮 

搜索mongodb,显示如下图

 

其中Scope的选择,默认compile即可。

对于scope=compile的情况(默认scope),也就是说这个项目在编译,测试,运行阶段都需要这个artifact对应的jar包在classpath中。
而对于scope=provided的情况,则可以认为这个provided是目标容器已经provide这个artifact。换句话说,它只影响到编译,测试阶段。在编译测试阶段,我们需要这个artifact对应的jar包在classpath中,而在运行阶段,假定目标的容器(比如我们这里的liferay容器)已经提供了这个jar包,所以无需我们这个artifact对应的jar包了。

添加完成后,在Dependencies页签可以进行管理,包括调整版本号等。



type表示依赖包的类型. 
Scope表示这个依赖包的作用周期. 
这些我们暂时不理会. 
保存后.如果是第一次安装maven,可能会有一段长时间的jar包下载过程. 
只要第一次把jar包下载到本地后就不需要下载了. 
maven默认的jar包下载地址在C盘 -->用户-->%User%-->.m2中 

maven会把和添加的jar包有依赖关系的全部下载下来.这样就避免了jar包缺失的问题了。

比如添加Spring-mvc相关的jar包,
maven下载完jar包后,点开项目中的Maven Dependencies,项目会下载很多jar包。

多的这些包其实是和spring-context包有依赖关系的包。

<iframe id="iframe_0.39530447825835613" style="margin: 0px; padding: 0px; border-width: initial; border-style: none; width: 381px; height: 206px;" src="data:text/html;charset=utf8,%3Cstyle%3Ebody%7Bmargin:0;padding:0%7D%3C/style%3E%3Cimg%20id=%22img%22%20src=%22http://dl.iteye.com/upload/attachment/444868/7e670c51-1388-3c91-a09e-d8e2d7e7f565.png?_=4680323%22%20style=%22border:none;max-width:989px%22%3E%3Cscript%3Ewindow.onload%20=%20function%20()%20%7Bvar%20img%20=%20document.getElementById('img');%20window.parent.postMessage(%7BiframeId:'iframe_0.39530447825835613',width:img.width,height:img.height%7D,%20'http://www.cnblogs.com');%7D%3C/script%3E" frameborder="0" scrolling="no"></iframe> 


2.未使用Maven,出现服务器Jar包冲突的解决

在开发测试时正常, 一旦部署到正式服务器上, 如果出现以下几类异常,很可能是存在jar包冲突:

1, java类找不到 java.lang.ClassNotFoundException
2, 方法不存在 java.lang.NoSuchMethodError
3, 字段不存在 java.lang.NoSuchFieldError
4, 类错误 java.lang.LinkageError
 
war包中jar包和服务器上jar包冲突, 由于现在服务器功能越来越强大, 而引入的jar也在不断增加, 
出现的冲突的可能性也越来越大, 而且正式环境复杂, 而且不能轻易修改服务器相关配置, 
为解决jar包冲突的问题带来困难, 如果去解决过这些问题, 那是相当折腾人的, 下面是一些方法的总结.

产生冲突的原因: 
这类冲突根本原因就是: 同一个java类存在多个jar包或类路径中, 而这大多由于使用了不同jar包版本造成.
 
下面的办法整理自网上资源,其实正确的使用Maven可以很好的避免这种情况的发生。

解决办法:

1, 案例法 
使用服务器上已有应用的jar包(前提:服务器上面已经部署过别的应用), 曾经使用过此方法解决冲突

2, 最小化法 
正式环境有很多限制, 上传,部署,启停,测试这些过程越简单越好, 最近一次把war包中137jar删除只剩下14个jar包, 
整个测试验证周期大大缩短

3, 来源法 
如果能知道类加载于哪个jar包, 解决就比较容易, 在异常中会有出错类的完整类名, 
如果能获取此类加载于那个jar包, 就能确认冲突的jar包,
如何知道class加载于那个jar包, 昨天灵机一动想到了一个方法, 其实也很简单, 代码如下:
1
clazz.getResource("className.class").toString();

  

4, 服务器分析法
了解各种应用服务器的class加载机制, 就能判断是什么原因, 什么时候导致的冲突, 这样可以通过调整class加载顺序解决, 
最近一次WAS服务器上的jar包冲突就此方法解决.
 

3.tomcat类加载顺序

 

Tomcat下的文件目录 
/bin:存放启动和关闭tomcat的脚本文件; 
/conf:存放tomcat的各种配置文件,比如:server.xml 
/server/lib:存放tomcat服务器所需要的各种jar文件(jar文件只可被tomcat 服务器访问) 
/server/webapps:存放tomcat自带的两个web应用:admin应用和manager应用。 
/common/lib:存放tomcat服务器以及所有web应用都可以访问的jar文件夹(web和tomcat服务器都可访问此jar) 
/shared/lib:存放web都可访问的jar文件。(可以被所有的web访问,但不能被tomcat访问) 
/logs:存放tomcat的日志文件 
/webapps:当发布web应用时,默认情况下把web应用文件放于此目录下 
/work:tomcat把由jsp生成的Servlet放于此目录 

另:在web应用中,WEB-Inf目录下,也可以建立lib子目录,在此子目录下可以存放各种jar文件,这些jar文件只能被当前web应用访问。其中,在web-inf目录下的lib与classes目录,Tomcat类装载器先装载classes目录下的类,再装载lib目录下的类。因为类同名时,classes优先。 

其中jsp运行时,查找class的顺序为:项目文件夹(WEB-INF\lib)—>容器文件夹(tomcat\common\lib)—>jdk文件夹(jdk\jre\lib\ext) 
Tomcat是一种向上寻找的层次结构,也有向下的,或者是可配置的。 

分享到:
评论

相关推荐

    Eclipse搭建MAVEN项目

    下面将详细介绍如何在 Eclipse 中搭建 Maven 项目,包括安装 Maven 插件、配置 Maven 环境变量、建立 Maven 管理的工程、导入依赖包等步骤。 第一步:安装 Maven 插件 在 Eclipse 中,首先需要安装 Maven 插件。...

    Eclipse中Maven项目创建及相关操作

    在本文中,我们将深入探讨如何在Eclipse中创建和管理Maven项目,这对于任何Java开发者来说都是至关重要的技能。Eclipse作为一个强大的集成开发环境(IDE),内置了对Maven的支持,使得开发者能够轻松地构建、管理和...

    eclipse导入maven项目报错解决办法

    在开发过程中,我们常常会遇到使用Eclipse导入Maven项目时出现的各种报错情况。本文旨在系统地介绍如何解决这些常见问题,包括但不限于配置环境、设置JDK版本、配置Maven库以及解决各种依赖问题等。 #### 一、准备...

    eclipse-maven3-plugin

    2. **自动构建和依赖管理**:Eclipse 插件会自动下载项目所需的依赖库,并根据 POM 文件中的配置进行管理。这简化了项目设置,减少了手动下载和添加库的步骤。 3. **项目索引更新**:插件会定期检查并更新 Maven ...

    使用Eclipse构建Maven项目.pdf

    - 项目创建后,可以使用Maven命令来添加项目依赖包,这样可以自动下载并添加相应的jar包到项目中。 - Maven项目可以通过Eclipse转换为Eclipse工程,便于Eclipse管理和操作。 - 根据项目的需要,可能还需要修改web...

    eclipse+maven+tomcat集成

    示例:在`pom.xml`文件中定义`junit.version`变量,并在依赖中引用该变量: ```xml &lt;junit.version&gt;4.12 &lt;groupId&gt;junit &lt;artifactId&gt;junit ${junit.version} &lt;scope&gt;test ``` #### 四、Maven构建 ...

    eclipse构建Maven项目.doc

    eclipse构建Maven项目 eclipse是一个功能强大且广泛应用的集成开发环境...使用eclipse构建Maven项目可以帮助开发者更好地管理项目依赖关系、编译、测试和打包,并且可以与Tomcat服务器集成,方便项目的开发和部署。

    使用Eclipse构建Maven项目 配套示例项目源码

    3. 在"Installations"中,添加Maven的安装位置,确保Eclipse知道哪个Maven版本应该被用来构建项目。 使用"testweb_svn"源码学习: "testweb_svn"很可能是一个包含示例代码的Maven Web项目,它可能包含了Servlets、...

    Eclipse使用Maven构建web项目视频教程

    1. **添加依赖**:在POM.xml中,通过`&lt;dependencies&gt;`标签添加所需的库,例如Servlet API、JSTL等。 2. **配置Web应用结构**:确保源代码、静态资源和Web部署描述符(web.xml)放置在正确的目录下,通常为`src/main/...

    使用Eclipse构建Maven项目

    在Eclipse中,我们可以通过右键点击项目,选择Maven &gt; Update Project来同步Maven配置,这会更新项目的构建路径,确保所有依赖都正确导入。 对于持续集成和自动化构建,Maven的命令行工具也很重要。例如,可以使用`...

    eclipse-maven3-plugin.zip

    这个插件使得开发者能够在Eclipse环境中无缝地管理Maven项目,包括构建、依赖管理和生命周期操作。在Eclipse中安装并配置m2e插件后,开发人员可以享受到以下功能和优势: 1. **项目导入与创建**:m2e插件允许用户...

    eclipse-maven内置

    Maven的依赖管理功能在Eclipse中得到体现,开发人员可以通过Maven仓库自动下载项目所需的库文件。Eclipse的“Dependency Hierarchy”视图能帮助用户查看和理解项目依赖关系。 **6. 更新项目配置** Eclipse-Maven...

    eclipse的maven插件

    总之,Eclipse的Maven插件极大地简化了Java项目的构建和管理工作,让开发者能够在熟悉的Eclipse环境中充分利用Maven的强大功能。无论是新手还是经验丰富的开发者,都能从中受益,提高开发效率和项目的可维护性。

    ECLIPSE实现MAVEN项目自动部署NEXUS中

    本篇文章主要介绍如何利用 Eclipse 和 Maven 将本地项目自动部署到 Nexus 仓库中。这种方法适用于团队协作环境下的依赖管理,能够帮助团队快速、稳定地进行项目的构建和分发。 #### 第一步:设置允许部署的服务器...

    eclipse-maven3-plugin工具

    3. **项目配置**:在Eclipse中编辑和管理pom.xml文件,方便地添加、删除或更新项目依赖。 4. **聚合与模块管理**:处理多模块Maven项目,可以在一个父POM下管理多个子项目。 5. **源码跳转**:通过插件实现从依赖库...

    eclipse安装maven插件需要包

    Eclipse是一款广受欢迎的Java开发集成环境,而Maven则是一个强大的项目管理和构建工具,它遵循约定优于配置的原则,能够帮助开发者管理项目依赖、构建、报告等任务。然而,在某些网络环境不佳的情况下,Eclipse可能...

    使用Eclipse构建Maven的Web项目

    在IT行业中,Eclipse是一款广泛使用的Java集成开发环境(IDE),而Maven则是一个强大的项目管理工具,主要用于构建、管理和依赖管理。这篇博客"使用Eclipse构建Maven的Web项目"将详细介绍如何利用Eclipse创建并配置...

Global site tag (gtag.js) - Google Analytics