什么是类路径,如何设置它?

2022-08-31 04:31:33

我刚刚读到这行:

format() 方法做的第一件事是从名为 output.vm 的类路径加载 Velocity 模板

请解释一下在此上下文中类路径的含义,以及我应该如何设置类路径。


答案 1

在 Java 中编程时,您可以通过在源文件的顶部放置如下内容,使其他类可用于您正在编写的类:

import org.javaguy.coolframework.MyClass;

或者有时你“批量导入”东西,说:

import org.javaguy.coolframework.*;

所以在你的程序后面,当你说:

MyClass mine = new MyClass();

Java 虚拟机将知道在哪里可以找到已编译的类。

让 VM 查看计算机上的每个文件夹是不切实际的,因此必须向 VM 提供要查找的位置列表。这是通过将文件夹和 jar 文件放在类路径上来完成的。

在讨论如何设置类路径之前,让我们先讨论一下.class文件、包和.jar文件。

首先,假设 MyClass 是您作为项目的一部分构建的,它位于项目中名为 ..class文件将位于(以及该包中的所有其他文件)。为了访问该文件,您的路径只需要包含文件夹“output”,而不是整个包结构,因为您的 import 语句向 VM 提供了所有这些信息。outputoutput/org/javaguy/coolframework/MyClass.class

现在,假设您将CoolFramework捆绑到一个.jar文件中,并将CoolFramework.jar放入项目中的lib目录中。您现在需要放入类路径中。VM 将在 jar 文件中查找部件,并找到你的类。lib/CoolFramework.jarorg/javaguy/coolframework

因此,类路径包含:

  • JAR 文件,以及
  • 包层次结构顶部的路径。

如何设置类路径?

每个人学习的第一种方式似乎是使用环境变量。在unix机器上,你可以这样说:

export CLASSPATH=/home/myaccount/myproject/lib/CoolFramework.jar:/home/myaccount/myproject/output/

在 Windows 计算机上,您必须转到环境设置,然后添加或修改已经存在的值。

第二种方法是在启动Java时使用参数,如下所示:-cp

java -cp "/home/myaccount/myproject/lib/CoolFramework.jar:/home/myaccount/myproject/output/"  MyMainClass

这是第三种方法,通常使用或文件来计算类路径并通过参数将其传递给Java。.sh.bat-cp

以上所有方面都有一个“陷阱”。在大多数系统(Linux,Mac OS,UNIX等)上,冒号字符(':')是类路径分隔符。在窗口中,分隔符是分号 (';')

那么最好的方法是什么呢?

通过环境变量全局设置内容是不好的,通常出于与全局变量不好的原因相同。您更改环境变量,以便一个程序正常工作,并最终破坏另一个程序。CLASSPATH

这是要走的路。我通常确保我的环境变量是一个空字符串,只要有可能,我就在那里开发,这样我就可以避免全局类路径问题(当全局类路径为空时,有些工具并不满意 - 我知道两个常见的,超级千美元的许可J2EE和Java服务器,它们的命令行工具存在这种问题)。-cpCLASSPATH


答案 2

可以把它想象成Java对PATH环境变量的答案 - 操作系统在PATH上搜索EXE,Java在类路径上搜索类和包。


推荐