java-关于java_home配置,classpath配置和javac,java命令,javac编译器,和java虚拟机之间的关系
在每个人学习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虚拟机之间的关系的更多相关文章
- Java中JAVA_HOME与CLASSPATH的解析(转)
很多人在初学Java的时候经常会被书中介绍的一堆环境变量的设置搞得头昏脑胀,很多书中都会在初装JDK的时候让他大家设置JAVA_HOME环境变量,在开发程序的时候设置CLASSPATH环境变量,而很多 ...
- Java 的 java_home, path, classpath
java_home: 指定 jdk 的安装目录. 第三方软件 Eclipse / Tomcat 在 java_home 指定的目录下查找安装好的 jdk. path: 配置 jdk 的安装目录.在命令 ...
- Java 8-Lambda表达式、方法引用、标准函数接口与流操作、管道操作之间的关系
1.Lambda表达式与接口之间的关系 只要Lambda表达式的声明形式与接口相一致,在很多情况下都可以替换接口.见如下代码 Thread t1 = new Thread(new Runnable() ...
- jdk环境变量配置及配置原因
windows下: 一.设置环境变量 变量名:JAVA_HOME 变量值:D:\Program Files\Java\jdk1.6.0 (即jdk安装的位置) 变量名:Path (这个变量名已在系 ...
- dubbo启动报java.lang.ClassNotFoundException: javassist.ClassPath
原文: dubbo启动报java.lang.ClassNotFoundException: javassist.ClassPath 在dubbo启动的过程中报错误:java.lang. ...
- Java的JAVA_HOME、Path、CLASSPATH环境变量小结,可以借助这三个的配置去理解Oracle中的那几个环境变量的配置作用
问题:在哪里都能执行java命令,是和JAVA_HOME变量有关系呢还是path中指定的那个java路径呢?? 刚学Java的时候,很多jdk配置教程都要求设置JAVA_HOME.Path.CLASS ...
- Java中classpath配置
Java中classpath配置 一.DOS常用命令 二.DOS常用命令实例 2.1 转换目录 cd 1.6* 2.2 删除文件 del 删除文件(windows删除从里往外删) del *.txt ...
- Java环境变量中classpath是必须配置吗
设置环境变量在java 中需要设置三个环境变量(1.5之后不用再设置classpath了,但个人强烈建议继续设置以保证向下兼用问题)JDK安装完成之后我们来设置环境变量:右击“我的电脑”,选择“属性” ...
- Java开发环境不再需要配置classpath!
前言: 之前发布了关于java开发环境配置的文章,经过与网友的交流,我了解到在jdk1.5以后,java开发环境配置的时候,确实不需要对classpath进行配置,但市面上的书籍,以及一些博客.还是老 ...
随机推荐
- 关于Android Studio 3.2 运行应用时提示 “Instant Run requires that the platform corresponding to your target device (Android 7.0 (Nougat)) is installed.” 的说明
点击"Run",运行App后,Android Studio显示如图1-1界面: 图1-1 这是因为你连接的外部设备(比如Android手机或AVD)的SDK版本在你的电脑上没有安装 ...
- Linux网络基本网络配置方法介绍
网络信息查看 设置网络地址: cat /etc/sysconfig/network-scripts/ifcfg-eth0 你将会看到: DEVICE=eth0BOOTPROTO=staticsHWAD ...
- 利用更快的r-cnn深度学习进行目标检测
此示例演示如何使用名为“更快r-cnn(具有卷积神经网络的区域)”的深度学习技术来训练对象探测器. 概述 此示例演示如何训练用于检测车辆的更快r-cnn对象探测器.更快的r-nnn [1]是r-cnn ...
- mssql server for docker on MacOs
1. install 1.下载镜像 docker pull microsoft/mssql-server-linux 使用该命令就可以把数据库的docker镜像下载下来. 2.创建并运行容器 dock ...
- 爬虫技术实现空间相册采集器V.0.0.1版本
一. 功能需求分析: 在很多时候我们需要做这样一个事情:我们想把我们QQ空间上的相册高清图像下载下来,怎么做?到网上找软件?答案是否定的,理由之一:网上很多软件不知有没有病毒,第二它有可能捆了很 ...
- Python函数的装饰器修复技术(@wraps)
@wraps 函数的装饰器修复技术,可使被装饰的函数在增加了新功能的前提下,不改变原函数名称,还继续使用原函数的注释内容: 方便了上下文环境中不去更改原来使用的函数地方的函数名: 使用方法: from ...
- 【数据库】+ powerdesigner
使用powerdesigner工具对现有数据库表 生成关系图:https://www.cnblogs.com/lusunqing/p/4128025.html 通过Excel生成PowerDesign ...
- ASP.NET Core 2.1 : 十四.静态文件与访问授权、防盗链
我的网站的图片不想被公开浏览.下载.盗链怎么办?本文主要通过解读一下ASP.NET Core对于静态文件的处理方式的相关源码,来看一下为什么是wwwroot文件夹,如何修改或新增一个静态文件夹,为什么 ...
- python rpyc 报错: AttributeError: cannot access 'new'
Error msg: Traceback (most recent call last): File "/home/hpcm/Desktop/test/install/client.py&q ...
- git@github.com: Permission denied (publickey).////remote: Permission to xxx/test.git denied to xxx.等权限问题
Error msg git@github.com: Permission denied (publickey) 或者: remote: Permission to xxx/test.git denie ...