Добавление 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 ...

в зависимости от того, что вам более удобно.