Добавление classpath в linux
export CLASSPATH=.;../somejar.jar;../mysql-connector-java-5.1.6-bin.jar
java -Xmx500m folder.subfolder../dit1/some.xml
cd ..
является приведенным выше утверждением для установки пути к уже существующему пути к классам в linux, или нет
Ответы
Ответ 1
Мне не нравится установка CLASSPATH. CLASSPATH - глобальная переменная, и поэтому она зла:
- Если вы измените его в одном script, вдруг некоторые Java-программы перестанут работать.
- Если вы поместили там библиотеки для всех вещей, которые вы запускали, и они засоряются.
- Вы получаете конфликты, если два разных приложения используют разные версии одной и той же библиотеки.
- Нет увеличения производительности, поскольку библиотеки в CLASSPATH не разделяются - просто их имя разделяется.
- Если вы поместите точку (.) или любой другой относительный путь в CLASSPATH, это означает, что в каждом месте будет другая вещь - это наверняка вызовет путаницу.
Поэтому предпочтительный способ - установить путь к классу на каждый запуск jvm, например:
java -Xmx500m -cp ".:../somejar.jar:../mysql-connector-java-5.1.6-bin.jar" "folder.subfolder../dit1/some.xml
Если это длится, стандартная процедура заключается в том, чтобы обернуть ее в bash или пакетный script, чтобы сохранить ввод.
Ответ 2
Он всегда советовал никогда не разрушать существующий путь класса, если у вас нет веской причины.
Следующая строка сохраняет существующий путь к классам и добавляет его.
export CLASSPATH="$CLASSPATH:foo.jar:../bar.jar"
Ответ 3
Важным различием между установкой Classpath в Windows и Linux является разделитель путей, который является ";" (полуколония) в Windows и ":" (двоеточие) в Linux. Кроме того, %PATH%
используется для представления значения существующей переменной пути в Windows, а ${PATH}
используется для той же цели в Linux (в оболочке bash). Вот способ установки classpath в Linux:
export CLASSPATH=${CLASSPATH}:/new/path
но поскольку такой путь класса очень сложный, и вы можете задаться вопросом, почему ваша программа не работает даже после установки правильного пути класса. Что следует отметить:
-
Параметры
-
-cp
переопределяют переменную среды CLASSPATH
.
- Путь к классам, определенный в файле манифеста, переопределяет переменную
-cp
и CLASSPATH
envorinment.
Ссылка: Как работает Classpath в Java.
Ответ 4
Контуры под linux разделяются двоеточиями (:
), а не полуколонами (;
), так как theatrus правильно использовал его в своем примере. Я считаю, что Java уважает это соглашение.
Изменить
В качестве альтернативы тому, что предложил andy, вы можете использовать следующую форму (которая устанавливает CLASSPATH на протяжении всей команды):
CLASSPATH=".:../somejar.jar:../mysql-connector-java-5.1.6-bin.jar" java -Xmx500m ...
в зависимости от того, что вам более удобно.