- JDK/JRE文件结构
在安装JDK后,其典型的目录层次如下所示(JDK 1.6.0):
主要的目录和JAR简述如下:
- <JAVA_HOME>/bin: 包含在JDK中的开发工具的可执行文件,一般而言,PATH环境变量应包含该目录。
- <JAVA_HOME>/lib: 开发工具使用的文件,其中包括:(1)tools.jar:该JAR包包含支持JDK中工具类和实用类的非核心类。同时也包含(2)dt.jar:BeanInfo使用的设计时(DesignTime)归档文件,该JAR包告诉IDE如何显示Java组件和如何让开发者定制它们。其中主要包含Swing的相关类。
- <JAVA_HOME>/jre/lib:包含Java运行时环境使用的核心类、属性设置和资源文件等。例如:(1)rt.jar:引导类(组成Java平台核心API的运行时类);(2)charsets.jar:字符转换类。
在一个典型的Web应用环境中,在设置CLASSPATH环境变量是,通常需要包含以下条目:
- .:为当前目录;
- <JAVA_HOME>/lib/tools.jar。
注意:
如果你使用 Tomcat 5.5作为 Servlet/JSP 容器的的 Web 应用中,Tomcat 5.5 在启动过程中清除了原有系统中的CLASSPATH 的内容,并对其进行了重新定义。
因为 Tomcat5.5中的 System类加载器通常使用系统的 CLASSPATH环境变量来初始化。但是标准的 Tomcat 5.5 启动脚本(<CATALINA_HOME>/bin/catalina.sh或者<CATALINA_HOME>/bin/catalina.bat>)完全忽略了CLASSPATH环境变量的内容,并使用下述库来构建System类加载器。
代码如下:
set CLASSPATH=
if "%CLASSPATH%" == "" goto emptyClasspath
set CLASSPATH=%CLASSPATH%;
:emptyClasspath
set CLASSPATH=%CLASSPATH%%CATALINA_HOME%\bin\bootstrap.jar
结果如下:
综上,Tomcat 5.5 使用的 CLASSPATH 并非我们先前配置的目录,也就是 System类加载器加载的并不是系统的CLASSPATH 。
Tomcat 5.0 和 Tomcat 6.0 并没有此问题。