【问题标题】:how to set classpath for multiple packages in command line?如何在命令行中为多个包设置类路径?
【发布时间】:2017-02-10 16:12:25
【问题描述】:

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

【问题讨论】:

    标签: java package classpath


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      您可能想阅读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.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 属性的)时,必须在清单中定义类路径并且忽略命令行类路径(请参阅java -jar documentation)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-08-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-26
        • 2016-02-17
        • 2016-03-14
        相关资源
        最近更新 更多