问题
我刚读这行:
format()方法的第一件事是从名为output.vm的类路径加载Velocity模板
在这种情况下,我无法弄清楚classpath的含义。
#1 热门回答(351 赞)
在使用Java编程时,通过在源文件的顶部放置类似的内容,可以使其他类可用于你正在编写的类:
import org.javaguy.coolframework.MyClass;
或者有时你通过说:"大量导入"东西:
import org.javaguy.coolframework.*;
所以稍后在你的计划中,当你说:
MyClass mine = new MyClass();
Java虚拟机将知道在哪里可以找到已编译的类。
让VM查看机器上的每个文件夹是不切实际的,因此你必须为VM提供要查看的位置列表。这是通过将文件夹和jar文件放在类路径上来完成的。
在我们讨论如何设置类路径之前,让我们来谈谈.class文件,包和.jar文件。
首先,假设MyClass是你作为项目的一部分构建的,它位于项目中名为output
的目录中。 .class文件位于output/org/javaguy/coolframework/MyClass.class
(以及该包中的每个其他文件)。为了获取该文件,你的路径只需要包含文件夹'output',而不是整个包结构,因为你的import语句将所有信息提供给VM。
现在让我们假设你将CoolFramework捆绑到.jar文件中,并将CoolFramework.jar放入项目的lib目录中。你现在需要将lib/CoolFramework.jar
添加到类路径中。 VM将查看org/javaguy/coolframework
part的jar文件,并找到你的类。
因此,类路径包含:- 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
这种方法的另一种变体是第三种方法,通常使用a.sh
或.bat
文件来计算类路径,并通过-cp
参数将其传递给Java。
那么最好的方法是什么?
通过环境变量全局设置内容很糟糕,通常是出于全局变量不好的相同原因。你更改CLASSPATH环境变量,以便一个程序工作,并最终破坏另一个程序。
-cp是要走的路。我通常确保我的CLASSPATH环境变量是一个空字符串,我尽可能地开发它,以便我避免全局类路径问题(当全局类路径为空时,有些工具不高兴 - 我知道两个常见的,千兆美元许可的J2EE和Java服务器,它们的命令行工具存在这种问题)。
#2 热门回答(44 赞)
可以把它想象成Java对PATH环境变量的回答 - 操作系统在PATH上搜索EXE,Java在类路径上搜索类和包。
就像泉水般的问题一样。
#3 热门回答(8 赞)
类路径是Java虚拟机在Java程序中查找用户定义的类,包和资源的路径。
在此上下文中,format()
方法从此路径加载模板文件。