java之classpath到底是什么
如果你输入一个命令,比如
java
那么系统是如何找到这个命令的呢?
按照顺序,系统先在当前目录搜索是否有java.exe, java.bat 等。 如果没有,就得到系统的PATH(不区分大小写)里面查找。
比如你的环境变量的PATH里面有 C:\program files\java\jdk1.6\bin
那么 系统会尝试在这个目录下面查找,并且找到了 java.exe 那么就会执行它。
所以 path 就是系统为了搜索某个资源而配置的一个参数。 多个目录之间用分号(linux里面用冒号)分割。
那么CLASSPATH呢? 同样的道理,当我们需要某个class时,系统会自动在CLASSPATH里面搜索,如果是jar,就自动从jar里面查找,如果是普通的目录,则在目录下面按照package进行查找。
但与PATH不同的是,默认的CLASSPATH是不包含当前目录的,这也是CLASSPATH里面要包含一个点的道理了。
Tomcat下的Web应用有两个预置的classpath : WEB-INF/classes 和WEB-INF/lib启动项目,项目就会加载这两个目录里的数据。这是war包的规范.要改变预置的classpath比较麻烦,在Tomcat的配置文件里没有发现类似的配置,要实现自己的classloader才能达到目的。
一个在tomcat中运行的web应用.它的classpath都包括如下目录:
我知道的有:
%tomcat%/lib
web-inf/lib
web-inf/classes
环境变量里的classpath
总结:classpath这是一个定位资源的入口.classpath下 lib的优先级大于classes;
--------------------------------------------------------------------------------------------------------------------------------
【1.环境变量】 通俗的说,环境变量就是在操作系统中定义的变量,可供操作系统上的所有应用程序使用。
查看环境变量: 命令行下 set命令。set命令查看到的是用户变量和系统变量值的总和。
【path环境变量】
将某个环境变量包含在一对%%之间,表示取这个环境变量的当前值.
当计算机上装有多个java开发工具,如何知道命令行窗口中执行的java命令属于那个开发工具包呢? 只要在运行java.exe时加上verbose参数就行了,格式如下:
java -verbose
java虚拟机启动时,就会显示其详细的加载过程信息。
path环境变量的作用:path环境变量的作用是设置供操作系统去寻找和执行程序的路径,也就是说如果操作系统在当前目录下 没有找到我们想要执行的程序和命令时,操作系统就会按照path环境变量指定的目录依次去寻找,以最先找到的为准。
path环境变量可以存放多个路径,路径和路径之间用分号(;)隔开。
【脚下留心】运行java代码的命令是 java XXX 而不是 java XXX.class!运行时不要带上.class扩展名。如果源文件为XXX.java,文件中有多个类定义,编译后的.class文件就有多个能直接用java命令启动运行只有那个含有main函数的类。java命令后面跟的参数是类名,而不是文件名。尽管文件名为XXX.java,却不见得是以java XXX的形式运行程序,关键还是要看类名。
【classpath环境变量】java虚拟机要装载某一个类时,去那个目录下查找?
java虚拟机在查找类的时候,不会在当前目录下查找,只找classpath指定的目录,因此我们如果不配classpath环境变量,在当前目录下编译java文件时,就会提示找不到class文件。因此我们通常在配classpath变量时用.表示当前路径.
【java中的注释】java里的注释根据不同的用途分为三种类型:
单行注释:在注释内容前加双斜线。
多行注释: 通过 /* int c=5;*/
文档注释: 通过/** 这里是注释内容*/
文档注释的内容会被解释成程序的正式文档,并能包含进诸如javadoc之类的工具程序生成的文档中。
\r表示接受键盘输入,相当于按下回车
\n表示换行
\t表示制表符,相当于Table键
\b表示退格键,相当于Back Space.
\'表示单引号
\''表示双引号
\\表示一个斜杠"\"
java之classpath到底是什么的更多相关文章
- Java 基础 - CLASSPATH 到底是什么
关于JAVA项目中CLASSPATH路径详解 https://www.cnblogs.com/hibou/p/8324276.html java项目中的classpath到底是什么 https://s ...
- Java finally语句到底是在return之前还是之后执行(JVM字节码分析及内部体系结构)?
之前看了一篇关于"Java finally语句到底是在return之前还是之后执行?"这样的博客,看到兴致处,突然博客里的一个测试用例让我产生了疑惑. 测试用例如下: public ...
- java classpath import package 机制 @Java的ClassPath, Package和Jar
java classpath import package 机制 從一個簡單的例子談談package與import機制 基本原則:為什麼需要將Java文件和類文件切實安置到其所歸屬之Package ...
- java 获取classpath下文件多种方式
java 获取classpath下文件多种方式 一:properties下配置 在resources下定义server.properties register.jks.path=classpath\: ...
- java获取classpath文件路径空格转变成了转义字符%20的问题
java获取classpath文件路径空格转变成了转义字符%20的问题 这个问题很纠结,服务器的文件路径带有空格,空格被转化是%20了,悲剧就出现了 下面展示一段代码String path = get ...
- java参数传递时到底是值传递还是引用传递
java参数传递时到底是值传递还是引用传递(baidu搜集) 问”,很多人的BLOG里都引用这些面试题,最近因为工作内容比较枯燥,也来看看这些试题以调节一下口味,其中有一道题让我很费解. 原题是:当一 ...
- java中classPath和Xpath问题
java中classPath和Xpath问题 今天遇到一个问题想获取classpath对应的目录,开始还以为java源代码可以像spring配置文件.xml中一样通过classpath:来获取对应的路 ...
- 谈谈Java的classpath
Java之ClassPath 大家刚开始写Java代码的时候,如果使用Eclipse作为IDE,同时需要引用其他的类库,一般会有如下操作 在工程中新建lib目录 将jar包复制到lib目录下 右键单击 ...
- 【转】Java finally语句到底是在return之前还是之后执行?
网上有很多人探讨Java中异常捕获机制try...catch...finally块中的finally语句是不是一定会被执行?很多人都说不是,当然他们的回答是正确的,经过试验,至少有两种情况下final ...
随机推荐
- Oracle基础 (系统工具(export,import)) exp/imp和 (数据泵 (data pump))expdp/impdp的区别:
一.exp/imp和expdp/impdp在功能上的区别: 1.把用户usera的对象导入到userb emp/imp用法: formuser=usera touser=userb; empdp/im ...
- 给力的轻量级JavaScript动画框架 - jsMorph
jsMorph 是一个独立的轻量级 JavaScript 动画框架,可以用它来操纵多个 HTML 元素的样式,实现动画效果.此框架会自动检测起始位置.转换单位.调整渲染的速度,以此来获得更流畅的渲染体 ...
- B-tree解释
1 .B-树定义 B-树是一种平衡的多路查找树,它在文件系统中很有用. 定义:一棵m 阶的B-树,或者为空树,或为满足下列特性的m 叉树:⑴树中每个结点至多有m 棵子树:⑵若根结点不是叶子结点,则至少 ...
- orcale 列改为大字段
--添加临时列ALTER TABLE MPD_TASK_LIST ADD( CLOB_TEMP clob);--数据拷贝到临时列update MPD_TASK_LIST set CLOB_TEMP ...
- 使用Gmail发送邮件心得
/// <summary> /// 发送邮件 /// </summary> /// <returns></returns> public static ...
- 递归小Demo
public class demo5 { public static void main(String[] args) { //初始值为100 int n = 100; ...
- 宽度的100%和auto的区别
前段时间做项目,发现分不清width设为100%和auto的区别,实在是太水了,就查了点资料,做个总结,有不对的地方欢迎大家指出. width:auto 块级元素默认的宽度值.看一下MDN上的解释:T ...
- Web API 入门指南 - 闲话安全(转)
Web API 安全概览 安全隐患 1. 注入(Injection) 2. 无效认证和Session管理方式(Broken Authentication and Session Management) ...
- C# 新特性 dynamic的使用及扩展
个人而言感觉C#的dynamic是一个特别实用的东西,为日常开发工作中的封装,数据传递等带来了很高的可扩展性. C#4.0中通过对数据类型后期绑定的支持,演化出了dynamic.任何直接声明为这种类型 ...
- Iframe跨域_ASP.NET
1.描述: A系统 需要 调用 B系统的页面,被调用的B系统的页面b.html内部嵌套了iframe框架c.aspx地址页 2.问题呈现: ie浏览器下 Chrome浏览器下 追踪 3.问题原因: X ...