分别通过【buildpath】和【lib】倒入JAR包有什么不同
我们可以通过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包有什么不同的更多相关文章
- 如何正确在IDEA 里maven构建的项目中引入lib的jar包(图文详解)
不多说,直接上干货! 问题详情 以下是我,maven构建出来的最新spark2.2.0-bin-hadoop2.6的项目. 有些依赖包,maven还是无法一次性满足,所以,得手动加入lib的jar包. ...
- 如何正确在IDEA 里非maven或非SBT构建的项目中引入lib的jar包(图文详解)
以下是我,手动的一个项目 假设,大家,还需要导入 导入spark的jar包:是安装主目录下的jars所有jar包和examples/jars包.
- java bulid path 和 WEB-INF/lib 下jar 包区别
用Java Build Path导入包和把包复制到lib下是有区别的,它俩其实不会冲突,也没有什么关系的, Java Build Path是我们编译需要的包, 导入到lib下是程序运行时需要的包 , ...
- 解决 eclipse buildpath的jar包不能复制到tomcat lib下的问题
环境: Eclipse 版本 Mars. 问题描述: Eclipse 开发的JavaWeb项目,通过buildpath的引入的jar包无法发布到tomcat对应应用的Lib 下. 解决办法: 1. 手 ...
- maven依赖本地非repository中的jar包-依赖jar包放在WEB-INF/lib等目录下的情况客户端编译出错的处理
MAVEN 今天在使用maven编译打包一个web应用的时候,碰到一个问题: 项目在开发是引入了依赖jar包,放在了WEB-INF/lib目录下,并通过buildpath中将web libariary ...
- Java-Maven(九):Maven 项目pom文件引入工程根目录下lib文件夹下的jar包
由于项目一些特殊需求,pom依赖的包可能是非Maven Repository下的包文件,因此无法自己从网上下载.此时,我们团队git上对该jar使用. Maven项目pom引入lib下jar包 在ec ...
- Eclipse部署时项目中依赖的jar包不能部署到服务器WEB-IN下lib目录
转: Eclipse部署时项目lib下jar包不能部署到服务器WEB-IN下lib目录及Eclipse下tomcat服务器配置修改 2018年04月07日 11:04:19 拾悦酒吧 阅读数 1046 ...
- maven加载jar包配置
maven build时报程序包不存在和找不到符号的错误,但是代码中不报错,如下: [ERROR] Failed to execute goal org.apache.maven.plugins:ma ...
- servlet相关 jar包位置 BAE上部署web应用
1手动编译servlet工程: 要编译servlet,则类路径classpath中必须包括Servlet API 的相关类,如果使用的web容器是Tomcat,则这些类通常封装在在tomcat的lib ...
随机推荐
- define() vs const 该如何选择?
使用 define(),除非考虑到可读性.类常量.或关注微优化 1.在 PHP 中是使用 define() 函数来定义常量,PHP 5.3.0 以后,PHP 中也能够使用 const 关键字来声明常量 ...
- Web Service-WSDL详解
WSDL指网络服务描述语言 (Web Services Description Language), 是一种用XML编写的文档, 用于描述Web Service和函数.参数以及返回值等; 文档内规定了 ...
- Python练习笔记——通讯录查询V1.0
作业: 编写一个代码,实现手机通讯录管理 实现功能:增.删.改.查 字典,列表 [扩展]不要求一定做出来 实现拼音首字母查找 phone = {} while True: num = input(&q ...
- PSQL_标准API和Interface基本的用法和比较(概念)
2014-01-05 Created By BaoXinjian
- Unix域套接字简介
在Linux系统中,有很多进程间通信方式,套接字(Socket)就是其中的一种.但传统的套接字的用法都是基于TCP/IP协议栈的,需要指定IP地址.如果不同主机上的两个进程进行通信,当然这样做没什么问 ...
- Codeforces Round #263 (Div. 2) proC
题目: C. Appleman and Toastman time limit per test 2 seconds memory limit per test 256 megabytes input ...
- 阿里云-DRDS(转)
分库分表 DRDS 在后端将数据量较大的数据表水平拆分到后端的每个 RDS 数据库中,这些拆分到RDS中的数据库被称为分库,分库中的表称为分表.DRDS 由每个分库负责每一份数据的读写操作,从而有效的 ...
- Flask教程 —— Web表单(上)
第二章中介绍的request对象公开了所有客户端发送的请求信息.特别是request.form可以访问POST请求提交的表单数据. 尽管Flask的request对象提供的支持足以处理web表单,但依 ...
- android笔记---AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="ht ...
- C#数据库帮助类SqlHelper
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Da ...