Подтвердить что ты не робот

Параметр Java -classpath

Будет ли использовать параметр -classpath с java, добавить или заменить содержимое переменной CLASSPATH env?

4b9b3361

Ответ 1

Используя переменную classpath, она переопределяет переменную CLASSPATH of Environment, но только для этого сеанса. Если вы перезапустите приложение, вам нужно снова установить переменную classpath.

Ответ 2

Используется один из вариантов, а не оба.

Задание -classpath или -cp переопределяет любой параметр переменной среды CLASSPATH.

...

Опция -classpath предпочтительнее, потому что вы можете установить ее отдельно для каждого приложения, не затрагивая другие приложения, и без других приложений, изменяющих ее значение.

...

Установка переменной CLASSPATH или с помощью параметра командной строки -classpath переопределяет это значение по умолчанию, поэтому, если вы хотите включить текущий каталог в путь поиска, вы должны включить ".". в новых настройках.

Ответ 3

Использование параметра -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

Ответ 4

Да. Цитируется на странице 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 (.).