Java -cp

652 阅读1分钟

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.jardep.jar的路径为/home/username/dep.jar,将这两个jar包添加到classpath中: export CLASSPATH=$CLASSPATH:/home/username/my-algorithm.jar:/home/username/dep.jar,不需要考虑添加顺序。