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

我刚才在读这句话:

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

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

当使用Java编程时,通过在源文件的顶部放置类似于以下内容的内容,可以为正在编写的类提供其他类:

导入org.javaguy.coolframework.MyClass;

或者有时你会说“批量进口”东西:

导入org.javaguy.coolframework.*;

所以在你的节目中,当你说:

MyClass-mine=new-MyClass();

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

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

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

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

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

因此,类路径包含:

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

如何设置类路径?

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

导出类路径=/home/myaccount/myproject/lib/CoolFramework.jar:/home/myaccount/myproject/output/

在Windows计算机上,您必须转到环境设置并添加或修改已有的值

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

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

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

有一个”,;“明白了”;所有这些。在大多数系统(Linux、Mac OS、UNIX等)上,冒号字符(“:”)是类路径分隔符。在windowsm中,分隔符是分号(“;”)

那么最好的方法是什么?

通过环境变量全局设置东西是不好的,通常是因为全局变量不好的原因。您更改了CLASSPATH环境变量,使一个程序工作,最终导致另一个程序中断

-cp是一条路要走。我通常确保我的CLASSPATH环境变量是一个空字符串,只要有可能,我都会在其中进行开发,以避免全局类路径问题(不过,当全局类路径为空时,一些工具并不高兴——我知道有两个常见的、价值数千美元的、获得许可的J2EE和Java服务器的命令行工具存在这种问题)

发表评论