Java - опция пути к классу

Будет использование -classpath опция с java, добавьте к или замените содержание CLASSPATH огибающая переменная?

19
задан James McMahon 29 January 2010 в 14:16
поделиться

4 ответа

Переменная классы передает переменную классов переменной среды, но только для этого сеанса. Если вы перезапустите приложение, вам нужно снова установить переменную классов.

15
ответ дан 30 November 2019 в 03:43
поделиться

Да. Quoted из 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 (.).
7
ответ дан 30 November 2019 в 03:43
поделиться

Использование опции -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
6
ответ дан 30 November 2019 в 03:43
поделиться

Используется любая из опций, а не обе.

Указание -classpath или -cp переопределяет любое значение переменной окружения CLASSPATH.

...

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

...

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

7
ответ дан 30 November 2019 в 03:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: