Java -classpath选项
将-classpath
选项与java
,添加或替换CLASSPATH
env变量的内容?
使用classpath变量,它会覆盖Environment变量的CLASSPATH,但仅覆盖该会话。 如果重新启动应用程序,则需要再次设置classpath变量。
使用其中一个选项,而不是两个选项。
指定-classpath或-cp会覆盖CLASSPATH环境变量的任何设置。
…
-classpath选项是首选,因为您可以为每个应用程序单独设置它,而不会影响其他应用程序,也不会修改其值的其他应用程序。
…
设置CLASSPATH变量或使用-classpath命令行选项会覆盖该缺省值,因此如果要在搜索路径中包含当前目录,则必须包含“。”。 在新设置中。
-cp选项的使用不会影响CLASSPATH环境变量。
您可以尝试使用此小代码片段来检查:
public class CPTest { public static void main (final String[] args) { String cp = System.getenv("CLASSPATH"); System.out.println(cp); } }
%echo $CLASSPATH /home/test/:.
没有-cp选项的输出:
%java CPTest /home/test/:.
带-cp选项的输出:
%java -cp /home/xanadu:. CPTest /home/test/:.
两个调用的输出相同(一个使用-cp,另一个不使用)。
也是CLASSPATH环境变量中指定的路径
使用或使用-cp选项指定的路径。 它不是两者的混合,而是其中之一。
从下面的调用中可以看出这一点。 如果是CWD(当前工作目录“。” )
从-cp选项中排除,JVM启动程序(即java)找不到
尽管CLASSPATH环境变量包含CWD( “。” ),但是类文件仍然存在。
%java -cp /home/test CPTest Exception in thread "main" java.lang.NoClassDefFoundError: CPTest
是。 引用自java(1)
手册页:
-classpath classpath -cp classpath Specifies a list of directories, JAR archives, and ZIP archives to search for class files. Class path entries are separated by colons (:). Specifying -classpath or -cp overrides any setting of the CLASSPATH environment variable. If -classpath and -cp are not used and CLASSPATH is not set, the user class path consists of the cur- rent directory (.).
- ColdFusion:关于使用自定义“自己编写的”Java类
- Jar hell:如何在运行时使用类加载器将一个jar库版本替换为另一个jar库版本
- 如何覆盖存放在ant lib目录中的ant任务
- Parent Last Classloader解决Java类路径地狱?
- 覆盖MATLAB默认静态javaclasspath的最佳方法
- Axis2客户端的最小类路径是什么?
- Windows上的RxTx安装java.lang.NoClassDefFoundError:gnu / io / CommPort
- 当JUnit类有多个导入时,如何从Windows CMD窗口运行JUnit测试?
- 自定义Java PMD规则:找不到CustomRule类