Java 将 -classpath 选项添加或替换 CLASSPATH 环境变量

新手上路,请多包涵

将使用 -classpath 选项和 java 添加或替换 CLASSPATH 环境变量的内容?

原文由 Zacky112 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

使用类路径变量,它会覆盖环境变量的 CLASSPATH,但仅限于该会话。如果重新启动应用程序,则需要再次设置类路径变量。

原文由 giri 发布,翻译遵循 CC BY-SA 2.5 许可协议

-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)无法找到

class 文件,尽管 CLASSPATH 环境变量中包含 CWD ( ”.” )。

 %java -cp /home/test CPTest
Exception in thread "main" java.lang.NoClassDefFoundError: CPTest

原文由 sateesh 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题