我试图让一个java程序导入2个包但不知道如何在一个命令行中为多个包设置类路径。
答案 0 :(得分:0)
致电java -cp <CLASSPATH> <MainClass>
。请阅读PATH and CLASSPATH以根据您的操作系统找到CLASSPATH的正确语法。
答案 1 :(得分:0)
您可能希望阅读Oracle tech note on setting the classpath,但一般的想法是您有一个类路径变量/命令行参数,该参数由使用您的平台的标准路径分隔符分隔的多个路径组成 - 在Windows上通常是“;”在Unix上:“”(我通常会说,如果你在Windows上使用bash通过cygwin或类似的方法,你将使用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
和一个当前工作目录{{1}我们有:
使用绝对路径的类路径:
/home/user/project
。
使用相对路径/home/user/project/classes:/home/user/project/lib/dependency.jar
的类路径。
可以使用classes:lib/dependency.jar
或-classpath
命令行参数将其传递给java:
-cp
java -classpath classes:lib/dependency.jar foo.bar.Baz
或者,可以设置CLASSPATH环境变量(通常在命令行上设置它并且不太容易导致意外的副作用更明显)。在bash中,这可能是:
java -cp classes:lib/dependency.jar foo.bar.Baz
CLASSPATH=classes:lib/dependency.jar java foo.bar.Baz
请注意,在使用可执行jar(其清单中具有Main-Class属性的jar)时,还必须在清单中定义类路径,并忽略命令行类路径(请参阅java -jar documentation )。