【发布时间】:2017-02-10 16:12:25
【问题描述】:
我正在尝试制作一个 java 程序来导入 2 个包,但不知道如何在单个命令行中为多个包设置类路径。
【问题讨论】:
我正在尝试制作一个 java 程序来导入 2 个包,但不知道如何在单个命令行中为多个包设置类路径。
【问题讨论】:
只需致电java -cp <CLASSPATH> <MainClass>。阅读此处PATH and CLASSPATH 以根据您的操作系统找到正确的 CLASSPATH 语法。
【讨论】:
您可能想阅读Oracle tech note on setting the classpath,但一般的想法是您有一个单一的类路径变量/命令行参数,它由使用您平台的标准路径分隔符分隔的多个路径组成 - 在 Windows 上,这通常是“;”在 Unix 上“:”(我一般说是因为如果你在 Windows 上通过 cygwin 或类似方式使用 bash,你将使用 unix 分隔符)。
无论如何,类路径由包含类文件的目录、特定 jar 文件或(在最近的 Java 版本中)匹配 jar(但不匹配类)的通配符组成。
如果您在 jar 或目录中有类,它们必须是目录包格式,例如以下类应位于目录 foo/bar/Baz.class:
package foo.bar;
public class Baz {
public static void main(final String[] args) {
}
}
因此,给定一个 Unix 目录 /home/user/project/classes(其中包含一个目录 foo/bar,其中包含 Baz.class,一个 jar 文件 /home/user/project/lib/dependency.jar,以及一个当前工作目录 /home/user/project,我们有:
使用绝对路径的类路径:
/home/user/project/classes:/home/user/project/lib/dependency.jar。
类路径使用相对路径classes:lib/dependency.jar。
可以使用-classpath 或-cp 命令行参数将其传递给java:
java -classpath classes:lib/dependency.jar foo.bar.Bazjava -cp classes:lib/dependency.jar foo.bar.Baz或者,可以设置 CLASSPATH 环境变量(在命令行上设置它通常更明显,不太容易引起意外的副作用)。在 bash 中,这可能是:
CLASSPATH=classes:lib/dependency.jar java foo.bar.Bazexport CLASSPATH=classes:lib/dependency.jar; java foo.bar.Baz请注意,当使用可执行 jar(在其清单中具有 Main-Class 属性的)时,必须在清单中定义类路径并且忽略命令行类路径(请参阅java -jar documentation)。
【讨论】: