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