Java 类路径
Java 类路径告诉 java 解释器和 javac 编译器去哪里找它们要执行或导入的类。类(您可能注意到的那些 *.class 文件)可以存储在目录或 jar 文件中,或者存储在两者的组合中,但是只有在它们位于类路径中的某个地方时,Java 编译器或解释器才可以找到它们。
在 Windows 中,类路径中的多个项是用分号分隔( ;)的,而在 UNIX 中,这些项是用冒号分隔( :)的。在以下实例中,类路径中包括两个 Cloudscape jar 文件( cs.jar 和 cstools.jar ),以及一个存储 *.class 文件的目录位置( myDevDir ):
Windows 类路径:
c:/Cloudscape_10.0/lib/cs.jar;c:/Cloudscape_10.0/lib/cstools.jar;c:/myPath/myDevDir
UNIX 类路径:
/Cloudscape_10.0/lib/cs.jar:/Cloudscape_10.0/lib/cstools.jar:/myPath/myDevDir
本文中的其余实例使用的都是 Windows 语法,因此,如果您是在 UNIX 机器上,那么需要对语法进行相应的调整。
设置 Java 类路径
有三种方式设置 Java 类路径:
1.永久地,通过在系统级上设置 CLASSPATH 环境变量来实现。
使用控制面板的系统设置来添加名为 CLASSPATH 的新变量,从而永久性地设置 Windows 环境变量。
UNIX 用户可以通过向 .profile 或 .cshrc 文件添加 CLASSPATH 变量来永久设置类路径。
2.临时地,通过在命令窗口或 shell 中设置 CLASSPATH 环境变量来实现。
在 Windows 命令窗口中临时设置 CLASSPATH
C:/>set CLASSPATH=%CLOUDSCAPE_INSTALL%/lib/cs.jar;.;
如果是临时设置类路径,那么每次打开新的命令窗口时,都需要再次设置它。
3.在运行时进行,每次启动 Java 应用程序和 JVM,都要指定类路径。
运行时使用 -cp 选项来指定类路径,这里的运行时是指启动应用程序和 JVM 时。
例如
C:/Cloudscape_10.0/demo/programs/simple>java -cp %CLOUDSCAPE_INSTALL%/lib/cs.jar; SimpleApp
检测问题
常见类路径错误
主要有两种类型的类路径问题。第一类问题发生在没有从类路径中找到您试图使用的 Java 类时,此时,它抛出一个 java.lang.ClassNotFoundException 异常。第二类问题发生在找到了您正试图使用的类,但没有找到它所导入的某个类时。本例中,在编译时显示了所导入的类,但在运行时,所导入的类没有包含在类路径中。这将抛出一个 java.lang.NoClassDefFoundError 异常。还有另一种考虑 NoClassDefFoundError 的方式,也就是说,在编译当前执行的类时,所搜索的类定义是存在的,但在运行时却再也无法找到该定义了
如何可以解决这类问题呢?首先,检查类路径,验证库是否真正位于您认为的地方。例如,在 Windows 中使用该命令来输出类路径:
C:/my_dir>echo %CLASSPATH%
c:/Cloudscape_10.0/lib/cs.jar;c:/Cloudscape_10.0/lib/cstools.jar
然后,在 CLASSPATH 变量中查看每个路径,并用 dir (Windows)或 ls (UNIX)命令查看这些文件是否存在。
如果不知道类位于哪个 jar 文件中,可以用以下命令来检查:
jar -tvf cs.jar | more
该命令产生许多输出。如果正使用 Linux 或 Unix,或者在 Windows 中使用 UNIX 使用程序,那么您可以用 grep 筛选您所查找的类。例如,以下命令将查找 com.ihost.cs.tools.sysinfo 类:
C:/Cloudscape_10.0/lib>jar -tvf cs.jar | grep -i com.ihost.cs.tools.sysin
JAVA类路径
本文介绍了Java类路径的概念,包括如何设置类路径以便Java解释器能够找到执行或导入所需的类。文章详细阐述了在Windows和UNIX环境下类路径的配置方法,并提供了三种设置类路径的方式:永久设置、临时设置和运行时设置。
摘要由CSDN通过智能技术生成