Java -cp命令
-cp代表classpath,即类路径。当Java需要执行一个类(执行类中的main函数),就从classpath里找需要的类(准确说是类所在的jar包)。当程序运行需要的jar包很少市,可以用java -cp命令运行。
假设有一个jar包my-algorithm.jar
包含类com.example.MyAlgorithm
(MyAlgorithm类含有main函数,可以主动执行),MyAlgorithm类依赖dep.jar
。那么可以通过以下命令执行main函数
$ java -cp dep.jar:my-algorithm.jar com.example.MyAlgorithm <parameters...>
-cp后的jar包是程序运行需要用到的jar包,将被依赖的jar包放到前面。如果出现NoClassDefFoundError
,就是缺少jar包或者jar包顺序不对。
配置classpath
当程序运行需要的jar包很多,其中的依赖关系将会很复杂,这时候可以通过配置classpath变量来使得Java找到需要的类。
假设my-algorithm.jar
的路径为/home/username/my-algorithm.jar
,dep.jar
的路径为/home/username/dep.jar
,将这两个jar包添加到classpath中:
export CLASSPATH=$CLASSPATH:/home/username/my-algorithm.jar:/home/username/dep.jar
,不需要考虑添加顺序。