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

发布于 2024-08-20 02:09:44 字数 98 浏览 12 评论 0原文

-classpath 选项与 java 一起使用会添加或替换 CLASSPATH 环境变量的内容吗?

Will the use of -classpath option with java add to or replace the contents of the CLASSPATH environment variable?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

厌倦 2024-08-27 02:09:44

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

Using the classpath variable it overrides the CLASSPATH of Environment variable but only for that session. If you restart the application you need to again set the classpath variable.

浅语花开 2024-08-27 02:09:44

是的。引自 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 (.).

Yes. Quoted from the java(1) man page:

   -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 (.).
叶落知秋 2024-08-27 02:09:44

使用其中一个选项,而不是同时使用两个选项。

指定 -classpath 或 -cp 会覆盖 CLASSPATH 环境变量的任何设置。

...

首选 -classpath 选项,因为您可以为每个应用程序单独设置它,而不会影响其他应用程序,也不会其他应用程序修改其值。

...

设置 CLASSPATH 变量或使用 -classpath 命令行选项会覆盖该默认值,因此如果要在搜索路径中包含当前目录,则必须包含“.”。在新设置中。

Either one of the options is used, not both.

Specifying -classpath or -cp overrides any setting of the CLASSPATH environment variable.

...

The -classpath option is preferred because you can set it individually for each application without affecting other applications and without other applications modifying its value.

...

Setting the CLASSPATH variable or using the -classpath command-line option overrides that default, so if you want to include the current directory in the search path, you must include "." in the new settings.

垂暮老矣 2024-08-27 02:09:44

-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

The usage of -cp option will not affect the CLASSPATH environment variable.

You can try this small code snippet to check this:

public class CPTest {
    public static void main (final String[] args) {
        String cp = System.getenv("CLASSPATH");
        System.out.println(cp);
    }
}
%echo $CLASSPATH  
/home/test/:.

The output without -cp option:

%java CPTest  
/home/test/:.

The output with -cp option:

%java -cp /home/xanadu:. CPTest  
/home/test/:.

The output is same for both invocations (one with -cp and one without).

Also either the path specified in the CLASSPATH environment variable is
used or the path specified with -cp option is used. It is not a mix of both
it is one of them.

This is evident from the below invocation.
If the CWD (current working directory ".")
is excluded from -cp option, the JVM launcher (i.e. java) cannot find the
class file despite the CLASSPATH environment variable containing CWD (".") in it.

%java -cp /home/test CPTest
Exception in thread "main" java.lang.NoClassDefFoundError: CPTest
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文