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;
为什么要配置classpath变量?配置classpath变量,才能使得java解释器知道到哪里去找标准类库,这些标准类库是别人已经写好了的,我们只管使用。比如我们常用到java.lang包中的类,在配置classpath变量后被设为默认导入,所以在写程序时就不用import这个包了。那么这些标准类库在哪呢?在以JDK的lib目录下以jar为后缀的文件中:一个是dt.jar,一个是tools.jar,这两个jar包都位于C:/jdk1.6.0/lib目录下,所以通常我们都会把这两个jar包加到我们的classpath环境变量的值为:.; C:\Program Files\Java\jdk1.5.0_17\\lib\tools.jar; C:\Program Files\Java\jdk1.5.0_17\\lib\dt.jar;
如何配置classpath变量?
在系统环境变量那一栏中点击新建classpath,具体过程省略,下面只列出其键值对:
变量名: CLASSPATH
变量值: .;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;
(注意,CLASSPATH最前面是有个“.”的,表示当前目录。用两个%包围JAVA_HOME这个变量的意思是引用变量的值,当然如果你不想这样做,也可以这样配置classpath的值为:.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;也就是用JAVA_HOME变量的值替换%JAVA_HOME%);
我们现在启动一个命令行窗口,按上述的方法把PATH的值全部清除,然后再运行dir、cd等命令。出乎我们意料的是,它们仍然能够正确执行。这,又是什么原因呢?
我们来看看刚才那些报告错误的信息,它们都提到了“内部命令”和“外部命令”的概念。那么什么是内部命令和外部命令呢?
内部命令和外部命令是DOS(disk operating system,微软早期基于命令行的操作系统)时代的概念,百度百科的解释是:内部命令是随每次启动的COMMAND_COM装入并常驻内存,而外部命令是一条单独的可执行文件。粗略地讲,所谓内部命令就是最核心、使用最多的命令。为了提高响应速度,系统一启动,这些命令就被加载到内存,因此可以迅速、直接地执行;而外部命令由于使用相对较少,就不预先加载到内存,当用户使用时,再到硬盘上(c:\windows\system32)找相应的可执行文件,然后加载到内存执行。像dir、cd等都是内部命令,而诸如attrib、format等都是外部命令。尽管DOS的时代早已成为了历史,但某些操作却必须在命令行模式下完成,对人士来说更是如此。因此,Windows产品一直保留着命令行模式这个工具。
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-58670-3.html
本想去超市找他们
现在的腌肉都是用化学物质腌制的
还美军保护地