在每个人学习java的第一步,都是安装jdk ,jre,配置java_home,classpath,path。

为什么要做这些?在阅读java-core的时候,看到了原理,p141。

  关于类的共享

  为了使类能被多个程序共享,需要做到以下几步:

  1.把类放到同一个目录中,且该目录是package树状结构的root目录;如将com.horstmann.corejava.Employee类添加在目录home/user/classdir下,这个Employee.class类文件就必须位于子目录/home/user/classdir/com/horstmann/corejava中。

  2.将jar文件放在一个目录中,例如home/user/archives

  3.设置类路径(classpath),类路径是所有包含类文件的路径的集合。在windows中,类路径使用;分隔。

  基于一的理论,我们配置了classPath

  比如,我的类路径classpath的设置是

.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

  代表我的java程序中,共享以下jar文件:dt.jar和tools.jar,以及.路径中的所有类,其中“."句号代表当前目录。

  这里没有设置类目录。

  javac编译器和java虚拟机执行的路径

  javac编译器总是在当前目录中查找文件,但java虚拟机仅在类路径中有"."目录的时候才查看当前目录。如果设置了类路径却忘了包含“.”目录,则程序可以编译,但不能运行。

  java虚拟机寻找类的方法

  e.g

    classpath配置为 c:/home/user/classdir;.;c:/home/user/archives/archive.jar,java虚拟机要找com.horstmann.corejava.Employee类文件。

    步骤如下:

      1.首先要查看存储在jre/lib和jre/lib/ext目录下的归档文件中所存放的系统类文件;

      2.如果没找到,找c:/home/user/classdir/com/horstmann/corejava/Employee.class

      3.如果没找到,找当前目录的/com/horstmann/corejava/Employee

      4.如果没找到,找c:/home/user/archives/archive.jar 中的com/horstmann/corejava/Employee.class

  编译器寻找类的方法

    太长了,反正就是有用类,就找该类的import,没找到或者找到多个就报错。

java-关于java_home配置,classpath配置和javac,java命令,javac编译器,和java虚拟机之间的关系的更多相关文章

  1. Java中JAVA_HOME与CLASSPATH的解析(转)

    很多人在初学Java的时候经常会被书中介绍的一堆环境变量的设置搞得头昏脑胀,很多书中都会在初装JDK的时候让他大家设置JAVA_HOME环境变量,在开发程序的时候设置CLASSPATH环境变量,而很多 ...

  2. Java 的 java_home, path, classpath

    java_home: 指定 jdk 的安装目录. 第三方软件 Eclipse / Tomcat 在 java_home 指定的目录下查找安装好的 jdk. path: 配置 jdk 的安装目录.在命令 ...

  3. Java 8-Lambda表达式、方法引用、标准函数接口与流操作、管道操作之间的关系

    1.Lambda表达式与接口之间的关系 只要Lambda表达式的声明形式与接口相一致,在很多情况下都可以替换接口.见如下代码 Thread t1 = new Thread(new Runnable() ...

  4. jdk环境变量配置及配置原因

    windows下: 一.设置环境变量 变量名:JAVA_HOME 变量值:D:\Program Files\Java\jdk1.6.0  (即jdk安装的位置) 变量名:Path  (这个变量名已在系 ...

  5. dubbo启动报java.lang.ClassNotFoundException: javassist.ClassPath

    原文: dubbo启动报java.lang.ClassNotFoundException: javassist.ClassPath         在dubbo启动的过程中报错误:java.lang. ...

  6. Java的JAVA_HOME、Path、CLASSPATH环境变量小结,可以借助这三个的配置去理解Oracle中的那几个环境变量的配置作用

    问题:在哪里都能执行java命令,是和JAVA_HOME变量有关系呢还是path中指定的那个java路径呢?? 刚学Java的时候,很多jdk配置教程都要求设置JAVA_HOME.Path.CLASS ...

  7. Java中classpath配置

    Java中classpath配置 一.DOS常用命令 二.DOS常用命令实例 2.1 转换目录 cd 1.6* 2.2 删除文件 del 删除文件(windows删除从里往外删) del *.txt ...

  8. Java环境变量中classpath是必须配置吗

    设置环境变量在java 中需要设置三个环境变量(1.5之后不用再设置classpath了,但个人强烈建议继续设置以保证向下兼用问题)JDK安装完成之后我们来设置环境变量:右击“我的电脑”,选择“属性” ...

  9. Java开发环境不再需要配置classpath!

    前言: 之前发布了关于java开发环境配置的文章,经过与网友的交流,我了解到在jdk1.5以后,java开发环境配置的时候,确实不需要对classpath进行配置,但市面上的书籍,以及一些博客.还是老 ...

随机推荐

  1. H5、C3、ES6的新特性

    H5的新特性 1.语义化标签 有利于SEO,有助于爬虫抓取更多的有效信息,爬虫是依赖于标签来确定上下文和各个关键字的权重. 语义化的HTML在没有CSS的情况下也能呈现较好的内容结构与代码结构 方便其 ...

  2. Web前端2019面试总结

    基础知识点   1.水平垂直居中 子绝父相,子盒子设置绝对定位,设置top:50%;left:50%,margin-top:-50%;margin-left:-50%; 子绝父相,子盒子设置绝对定位, ...

  3. MyDAL - .Where() & .And() & .Or() 使用

    索引: 目录索引 一.API 列表 1.Where .Where(Func<M, bool> func) 如: .Where( it => (it.Prop1>=条件1 &am ...

  4. MySQL- 简单操作命令及教程

    MySQL数据库(;表示结束语句) 关系型数据库 注释用 // db_name表示库名: b_name表示表名 1.进入.退出 root用户只能在本机连接,不可外部链接 进入:mysql -uroot ...

  5. Python之爬虫的理解

    #  -*- coding: utf-8 -*-  中文用户一定先用这行来声明编码方式 爬虫: 爬虫是自动访问互联网,并且提取数据的程序  (从网络上获取非结构化的数据,ETL将这些数据转换为结构化数 ...

  6. C/C++中容器vector用法

    C++中数组非常坑,有没有相似Python中list的数据类型呢?相似的就是vector!vector 是同一种类型的对象的集合,每一个对象都有一个对应的整数索引值. 和 string 对象一样.标准 ...

  7. 一起刷LeetCode

    题目列表: 题目 解答 26. 删除排序数组中的重复项 https://www.cnblogs.com/powercai/p/10791735.html 25. k个一组翻转链表 https://ww ...

  8. 毕业设计(3)基于MicroPython的篮球计时计分器模型的设计与实现

    前言 我们身边有不少人都喜欢看篮球比赛或者经常打篮球.说起篮球,肯定要提到NBA(美国职业篮球联赛),现在也正是NBA 18-19赛季常规赛的时候.最近3月5日,韦少22分帮助雷霆终结了四连败,哈登4 ...

  9. 超链接标签绑定JS事件&&不加"javascript:;"导致的杯具

    很久以来,在写Html和JS时,经常会给超链接<a>标签,绑定JS事件. 我们经常看到这样的写法,<a href="javascript:;" onclick=& ...

  10. FineUIPro/Mvc/Core v5.4.0即将发布(Core基础版,新功能列表)!

    FineUIPro/Mvc/Core v5.4.0 即将于 2019-03-04 发布,目前官网示例已更新,先睹为快:http://pro.fineui.com/http://mvc.fineui.c ...