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.
\‘表示单引号
\‘‘表示双引号
\\表示一个斜杠"\"

时间: 2024-10-15 15:33:57

java之classpath到底是什么的相关文章

java的classpath到底是什么鬼

CLASSPATH,现在的jdk(1.5以后)不需要这个环境变量了.最初的jdk自己找不到jdk\lib目录下的tools.jar,所以需要配置这个环境变量. 作用:Java虚拟机(JVM)借助类装载器装入应用程序使用的类,具体装入哪些类根据当时的需要决定.CLASSPATH环境变量告诉类装载器到哪里去寻找第三方提供的类和用户定义的类.另外,你也可以使用JVM命令行参数-classpath分别为应用程序指定类路径,在-classpath中指定的类路径覆盖CLASSPATH环境变量中指定的值. T

classpath到底是什么目录

最近用spring读一个Properties的文件,上网查了一下,知道了大概怎么写.但是文件的存放位置让我十分头疼.大家都说是放在classpath路径下.可这个classpath到底是什么路径?通过一番努力终于弄清了.是这样,程序在打完jar包之后,会有几个文件夹,一个是你代码的最上层包名,一次点击开便是类文件.二十META-INF资源文件夹,还有就是放在根目录下的某些配置文件,如log的配置文件.那么,classpath就是jar解压后的第一层目录.如果,source folder 的目录结

获取java项目 classpath目录

this.getClass().getResource("/").getPath(); 从根目录获取载入文件: this.getClass().getResourceAsStream("/myshop.properties") 获取java项目 classpath目录,布布扣,bubuko.com

谈谈Java的classpath

Java之ClassPath 大家刚开始写Java代码的时候,如果使用Eclipse作为IDE,同时需要引用其他的类库,一般会有如下操作 在工程中新建lib目录 将jar包复制到lib目录下 右键单击选中jar,点击Bulid Path,之后点击Add to Bulid Path 最终我们可以在Referenced Libraries中看到我们添加的jar包 ClassPath 其实上述的操作都和ClassPath有关,那究竟什么是ClassPath,ClassPath的作用是什么? 1. 什么

【转】Java finally语句到底是在return之前还是之后执行?

网上有很多人探讨Java中异常捕获机制try...catch...finally块中的finally语句是不是一定会被执行?很多人都说不是,当然他们的回答是正确的,经过试验,至少有两种情况下finally语句时不会被执行的: (1)try语句没有被执行到,如在try语句之前就返回了,这样finally语句就不会执行,这也说明了finally语句被执行的必要而非充分条件是:相应的try语句一定被执行到. (2)在try块中有System.exit(0);这样的语句,System.exit(0);是

java项目中的classpath到底是什么

https://segmentfault.com/a/1190000015802324 原文地址:https://www.cnblogs.com/lhuser/p/10906044.html

classpath到底指的哪里

之前一直对classpath不太明白到底指的哪里,今天研究了一下,做个总结.. classpath顾名思义就是指类路径,但是这样解释可能还是不明白,这里拿一个SpringBoot应用编译后生成的target项目文件目录来说. 首先源码目录结构是这样的: src ---main -----java -------你的java文件 -----resources --------配置文件 ---test 然后mvn complie后生成的target目录结构如下 target ----classes

Java finally语句到底是在return之前还是之后执行?

网上有很多人探讨Java中异常捕获机制try...catch...finally块中的finally语句是不是一定会被执行?很多人都说不是,当然他们的回答是正确的,经过我试验,至少有两种情况下finally语句是不会被执行的: (1)try语句没有被执行到,如在try语句之前就返回了,这样finally语句就不会执行,这也说明了finally语句被执行的必要而非充分条件是:相应的try语句一定被执行到. (2)在try块中有System.exit(0);这样的语句,System.exit(0);

java的classpath和path理解

1)classpath即是类路径的意思,后缀为.java的源程序编译成功之后会生成后缀为.class的类文件.classpath与import关键字是相关的,程序编译的时候,遇到import关键字,编译器就会到classpath参数对应的路径中去寻找对应的.class类文件,将其倒入.classpath的一个示例如下: classpath=“.;/usr/local/jdk/lib;/home/hadoop/DoubleArrayWritable.jar” 其中,DoubleArrayWrita