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