繁体   English   中英

如何在命令行中为多个包设置类路径?

[英]how to set classpath for multiple packages in command line?

我正在尝试制作一个 java 程序来导入 2 个包,但不知道如何在单个命令行中为多个包设置类路径。

只需调用java -cp <CLASSPATH> <MainClass> 阅读此处的PATH 和 CLASSPATH以根据您的操作系统找到CLASSPATH的正确语法。

您可能想阅读有关设置类路径Oracle 技术说明,但总体思路是您有一个类路径变量/命令行参数,该参数由使用平台的标准路径分隔符分隔的多个路径组成 - 在 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 (其中包含一个包含Baz.class的目录foo/bar 、一个 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.Baz
  • java -cp classes:lib/dependency.jar foo.bar.Baz

或者,可以设置 CLASSPATH 环境变量(通常在命令行中设置更明显,不易引起意外副作用)。 在 bash 中,这可能是:

  • CLASSPATH=classes:lib/dependency.jar java foo.bar.Baz
  • export CLASSPATH=classes:lib/dependency.jar; java foo.bar.Baz

请注意,当使用可执行 jar(在其清单中具有 Main-Class 属性的 jar)时,还需要在清单中定义类路径,并忽略命令行类路径(请参阅java -jar 文档)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM