2017-02-10 105 views

回答

0

只要打电话,java -cp <CLASSPATH> <MainClass>。读到这里PATH and CLASSPATH找到根据您的操作系统的CLASSPATH正确的语法。

0

您可能想要阅读Oracle tech note on setting the classpath,但总的想法是,您有一个单独的类路径变量/命令行参数,它由多个路径组成,这些路径使用您的平台的标准路径分隔符分隔 - 在Windows上,这通常是“ ;”和Unix上的“:”(我说通常是因为如果你通过cygwin或类似的Windows使用bash,你将使用unix分隔符)。无论如何,类路径都是由包含类文件的目录,特定的jar文件或(在最近的java版本中)匹配罐子(但不包括类)的通配符组成的路径组成的。

如果你有一个罐子或目录中的类,它们必须在目录的封装格式,如下面的类预计将在一个目录foo/bar/Baz.class

package foo.bar; 

public class Baz { 
    public static void main(final String[] args) { 
    } 
} 

所以,对于一个UNIX目录/home/user/project/classes (其中包含目录包含Baz.class,一个jar文件/home/user/project/lib/dependency.jar,和/home/user/project当前工作目录foo/bar我们:

  • 类使用路径绝对路径: /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时(一个与主级在其清单属性)是必要的类路径中还在清单中被定义和命令行类路径被忽略(参见java -jar documentation)。