zoukankan      html  css  js  c++  java
  • jar包和动态链接库

    1 jar普通包更接近于动态链接库

    java在编译的时候,尽管import了其它的jar包,但是它并没有将其它jar包中的源码拷贝到自己的class文件中,它只是使用了jar包中的名字。

    而在执行的时候,自己和依赖的jar包都加载进jvm中,在执行前完成链接,这个过程更加类似于动态链接库。

    maven仓库中的普通包基本上都是这样的包,只有可执行的包才会将程序所需的所有依赖包都包含在其中。

    2 jvm找jar包

    各类class loader去指定的目录中找jar包。

    bootstrap class loader去jre/lib目录,

    extention class loader去jre/lib/ext目录,

    application class loader去classpath指定的目录。在执行的时候手动指定classpath,

    java -classpath [some path to the jar, for example -classpath c:\java\myclasses.jar]  myprogram

    3 eclipse中的classpath,即对第三方库的使用

    放在项目的lib目录下,然后add library就可以了,这样的话,就是通过相对路径的方式把自己添加到了classpath中。

    4 打包的时候,是打包的整个依赖树

    maven下载的也是工程的整个依赖树,exclusions将会导致被excluded包不会被下载和包含,如果用到了,那么启动的时候会报错。

    5 java可执行程序构成的基本单元是包

    任何java可执行程序都是由包构成的,就算没有包,也有jre运行环境中的包。

    除了包,还有可执行文件自己的class文件。

  • 相关阅读:
    C语言实现链表
    获取两个数之间的随机数-java
    C#继承机制 多级继承
    C#继承机制 访问与隐藏基类成员
    C#继承机制 C#中的继承符合下列规则
    C#装箱与拆箱的研究
    C#箴言之用属性来访问类的私有成员
    C# 创建和初始化集合对象
    C# 常用函数和方法集汇总
    C# 多态与new关键字
  • 原文地址:https://www.cnblogs.com/hustdc/p/8072775.html
Copyright © 2011-2022 走看看