Будет ли использовать параметр -classpath
с java
, добавить или заменить содержимое переменной CLASSPATH
env?
Параметр Java -classpath
Ответ 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 (.).