我们可以通过java虚拟机的类加载器来理解。
通过buildpath设置(或添加)程序使用jar包的classpath。
Java虚拟机是根据Java ClassLoader(类加载器)决定如何,到那里去加载Class
=================================================
我们之所以把jar包放在classPath下,是因为存在ClassPath ClassLoader
我们之所以可以不再ClassPath指定一些Jar包,但在Java程序中也能使用。
那是因为有 Root ClassLoader(由C++编写)
我们之所以把Jar包放入webroot下的lib文件夹,并且可以在我们的程序中使用,那是容器实现了自己的ClassLoader。
=============================
所以说能不能加载Jar,加载哪里的Jar,是根据ClassLoader决定的。
系统默认提供了3个ClassLoader
Root ClassLoader -> ClassPathLoader -> ExtClassLoader(用于加载Java虚拟机ext目录下的Jar)
当然我们也可以编写自己的ClassLoader,去加载特定环境下的Jar文件。
=================================
你可以去看看ClassLoader的相关介绍(想深入了解java虚拟机的话)。
================================
Eclipse只是一个开发工具,至于采用导入方式Copy Jar包,还是采用,手动Copy到webroot\lib目录下,都是一样的。
因为如果你做的是WEB开发的话,不管你是采用Eclipse导入方式还是采用手动拷贝的方式,最后那些Jar都会被放在webroot/lib目录下。

当然利用Eclipse去导入Jar包也有一些要注意的地方,比如Eclipse下方会有英文的提示信息"是否将Jar包拷贝到WebRoot/Lib"下,如果没有选中,
你会惊讶的发现我的程序也能运行。。。
这是因为Eclipse在这种情况下,自动将这个Jar包设置成ClassPath形式了。

如果换一台机器,你的程序就不能运行了。原因很简单,
因为不是所以机器都有ClassPath的。也更不会像Eclipse那样,自动的为为程序在启动前设置Jar的ClassPath。

分别通过【buildpath】和【lib】倒入JAR包有什么不同的更多相关文章

  1. 如何正确在IDEA 里maven构建的项目中引入lib的jar包(图文详解)

    不多说,直接上干货! 问题详情 以下是我,maven构建出来的最新spark2.2.0-bin-hadoop2.6的项目. 有些依赖包,maven还是无法一次性满足,所以,得手动加入lib的jar包. ...

  2. 如何正确在IDEA 里非maven或非SBT构建的项目中引入lib的jar包(图文详解)

    以下是我,手动的一个项目 假设,大家,还需要导入 导入spark的jar包:是安装主目录下的jars所有jar包和examples/jars包.

  3. java bulid path 和 WEB-INF/lib 下jar 包区别

    用Java Build Path导入包和把包复制到lib下是有区别的,它俩其实不会冲突,也没有什么关系的, Java Build Path是我们编译需要的包, 导入到lib下是程序运行时需要的包 ,  ...

  4. 解决 eclipse buildpath的jar包不能复制到tomcat lib下的问题

    环境: Eclipse 版本 Mars. 问题描述: Eclipse 开发的JavaWeb项目,通过buildpath的引入的jar包无法发布到tomcat对应应用的Lib 下. 解决办法: 1. 手 ...

  5. maven依赖本地非repository中的jar包-依赖jar包放在WEB-INF/lib等目录下的情况客户端编译出错的处理

    MAVEN 今天在使用maven编译打包一个web应用的时候,碰到一个问题: 项目在开发是引入了依赖jar包,放在了WEB-INF/lib目录下,并通过buildpath中将web libariary ...

  6. Java-Maven(九):Maven 项目pom文件引入工程根目录下lib文件夹下的jar包

    由于项目一些特殊需求,pom依赖的包可能是非Maven Repository下的包文件,因此无法自己从网上下载.此时,我们团队git上对该jar使用. Maven项目pom引入lib下jar包 在ec ...

  7. Eclipse部署时项目中依赖的jar包不能部署到服务器WEB-IN下lib目录

    转: Eclipse部署时项目lib下jar包不能部署到服务器WEB-IN下lib目录及Eclipse下tomcat服务器配置修改 2018年04月07日 11:04:19 拾悦酒吧 阅读数 1046 ...

  8. maven加载jar包配置

    maven build时报程序包不存在和找不到符号的错误,但是代码中不报错,如下: [ERROR] Failed to execute goal org.apache.maven.plugins:ma ...

  9. servlet相关 jar包位置 BAE上部署web应用

    1手动编译servlet工程: 要编译servlet,则类路径classpath中必须包括Servlet API 的相关类,如果使用的web容器是Tomcat,则这些类通常封装在在tomcat的lib ...

随机推荐

  1. 列表生成式&生成器表达式

    一.列表生成式 def func(): return [lambda x:i*x for i in range(4)] print([j(2) for j in func()]) 结果:[6,6,6, ...

  2. mybatis启动报错Result Maps collection already contains value forxxx

    ssm搭建过程中启动tomcat,报错: Cause: java.lang.IllegalArgumentException: Result Maps collection already conta ...

  3. HDU 1757 A Simple Math Problem (矩阵乘法)

    A Simple Math Problem Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  4. C# 采用钩子捕获键盘和鼠标事件-验证是否处于无人操作状态

    原文地址:https://www.cnblogs.com/gc2013/p/4036414.html 全局抽象类定义 using System; using System.Collections.Ge ...

  5. python学习笔记——fork()创建多进程

    1 进程概述 引自 Python 多进程 fork()详解 1.1 进程 进程是程序的一次动态执行过程,它对应了从代码加载.执行到执行完毕的一个完整过程. 进程是系统进行资源分配和调度的一个独立单位. ...

  6. oc 工厂方法

    通过上例看oc创建实例有点麻烦,oc里面可以创建工厂方法可以让这个操作更简单一些(其实就是c#或者java里面的静态方法). 新建一个“Cocoa Touch Class”文件,命名为People P ...

  7. win7 下jenkins配置与使用

    一.Jenkins的配置 1. 下载地址: Jenkins的官方网站:http://jenkins-ci.org/ 目前最新版本的Windows版:http://mirror.xmission.com ...

  8. view变化监听器ViewTreeObserver介绍

      A view tree observer is used to register listeners that canbe notified of global changes in the vi ...

  9. Linux内核(8) - 设备模型(下)

    设备模型拍得再玄幻,它也只是个模型,必须得落实在具体的子系统,否则就只能抱着个最佳技术奖空遗恨.既然前面已经以USB子系统的实现分析示例了分析内核源码应该如何入手,那么这里就仍然以USB子系统为例,看 ...

  10. nginx 内置变量大全(转)

    HTTP核心模块支持一些内置变量,变量名与apache里的对应.比如 $http_user_agent,$http_cookie等表示HTTP请求信息的变量.更多变量:$args, 请求中的参数; $ ...