Будет использование -classpath
опция с java
, добавьте к или замените содержание CLASSPATH
огибающая переменная?
Переменная классы передает переменную классов переменной среды, но только для этого сеанса. Если вы перезапустите приложение, вам нужно снова установить переменную классов.
Да. 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 (.).
Использование опции -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
Используется любая из опций, а не обе.
Указание -classpath или -cp переопределяет любое значение переменной окружения CLASSPATH.
...
Опция -classpath предпочтительнее, так как ее можно установить индивидуально для каждого приложения, не затрагивая другие приложения и не изменяя его значения.
...
Установка переменной CLASSPATH или использование опции командной строки -classpath отменяет значение по умолчанию, поэтому, если вы хотите включить текущий каталог в путь поиска, вы должны включить "..." в новые настройки.